Autor |
Beitrag |
Bronstein
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Do 14.06.07 07:49
Sorry für den Titel, mir ist aber keiner eingefallen, mit dem ich dieses Problem beschreiben kann
Ich habe zwei Tabellen. In der einen Tabelle stehen Beurteilungen und in der anderen die Beurteilungskriterien:
Tabelle Beurteilung hat folgende Felder:
KartenID, Kartename, KriteriumID, Text
Tabelle Beurteilungskriterien hat folgende Felder:
KriteriumID, Text
Die Tabellen sind also über die Spalte KriteriumID verknüpft.
Jetzt möchte ich herrausbekommen bei welcher Karte noch nicht alle Kriterien ausgefüllt sind.
Das Ergebnis sollte dann so aussehen:
KartenID, Kartenname, KriteriumID, Text (von Beurteilung)
1, Test, 1, sehr spannend
1, Test, 2,
1, Test, 3, lustig
2, Aussichtskarte, 1, ganz okay
2, Aussichtskarte, 2, ganz okay
2, Aussichtskarte, 3,
So sehe ich jetzt, dass bei der Karte 1 für die KriteriumID 2 keine Bewertung abgegeben wurde und bei der Karte 2 für das Kriterium 3 keine Bewertung abgegeben wurde.
Habe jetzt mal folgendes versucht:
SELECT KartenID, Kartename, Beurteilung.KriteriumID, Text FROM Beurteilung INNER JOIN Beurteilungskriterien ON Beurteilung.KriteriumID = tblProjekt.KriteriumID
Hier sehe ich nur die Kriterien bei denen was abgegeben wurden
Habe diese Abfrage auch mit Left Join und Right Join versucht, doch ich bekomme dasselbe Ergebnis
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 14.06.07 07:52
Hi,
ein LEFT JOIN mit einer Abfrage auf Is Null sollte das richtige Ergebniss prüfen, sonst müsste man es mit In (SELECT...) versuchen, was aber nicht performant ist und das LEFT JOIN zu bevorzugen ist.
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 14.06.07 08:00
Oder man erstellt eine View 
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 14.06.07 08:02
Oder du arbeitest mit VBA in einer Abfrage oder machst eine SP draus, aber auf welchem DBMS arbeiten wir denn? 
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 14.06.07 08:08
Wenn ich mich richtig erinner, arbeitet Bronstein auf MySQL;
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Do 14.06.07 08:21
@ene
SELECT Beurteilung.KartenID, Beurteilung.Kartename, Beurteilung.Text, Beurteilungskriterien.KriteriumID
FROM Beurteilung LEFT JOIN Beurteilungskriterien ON Beurteilung.KriteriumID = Beurteilungskriterien.KriteriumID
WHERE (((Beurteilungskriterien.KriteriumID) Is Null));
Hier bekomme ich nichts herraus, spricht es werden überhaupt keine Daten angezeigt
@ZeitGeist87
Wie soll das denn funktionieren? Habe noch nie mit einem View gearbeitet!
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 14.06.07 09:13
Sorry, da hab ich auch zu kurz gedacht, welche Version von MySQL?
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 14.06.07 09:20
Ist KriteriumID in der ersten Tabelle als ForeignKey definiert?
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 14.06.07 09:24
Aber um ehrlich zu sein, versteh ich dein ganzes Tabellenkonzept nicht!!!
Warum hast du in der ersten Tabelle KriteriumID und Text und in der zweiten dann nochmal??
Was bringt das??
Schau dir das mal an:
de.wikipedia.org/wik...isierung_(Datenbank)
Extrem wichtig bei DBMS und entwerfen von Tabellen!
Wichtig sind nur die ersten 3 Normalformen!
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
|