Abfrageproblem

Hallo,

leider alles falsch gemacht:

1. Bitte sprechende Betreffs vergeben. Dass Du ein Abfrageproblem hast, ist schon klar, sonst würdest Du nicht posten.
2. Du musst das Problem beschreiben. Von den Könnern hier kannst Du nicht erwarten, dass sie vor der Lösung erst noch das Problem suchen müssen.
3. Das Skript solltest Du wirklich in das Posting schreiben, geht doch mit CODE an/aus problemlos. Wenn jemand sich doch die Mühe macht, einen Verbesserungsvorschlag einzubringen, müsste er Dein Skript abtippen!

CNR
Inhaltlich kann ich Dir leider nicht helfen.

Gruss
m3000
 
Hallo zusammen.

Dann will ich mal näher auf mein Problem eingehen.
Erstmal die Struktur:

tipspiel__mannschaften
- id
- verein
- stadion

tipspiel__saison
- id

tipspiel__spieltag
- id
- saisonid
- lfdnr

tipspiel__spiel
- id
- spieltagid
- heimid
- gastid
- lfdnr
- teimtore
- gasttore

tipspiel__datum
- id
- tag
- datum
- spieltagnr

Jetzt habe ich folgende Abfrage gestellt:

Code:
SELECT tipspiel__spiel.lfdnr AS Spielnummer, spieltagid AS Spieltag, heim.verein AS Heimteam, gast.verein AS Gästeteam, CONCAT( heimtore, ' : ', gasttore ) AS Ergebnis, datum AS Datum
FROM tipspiel__spiel
LEFT JOIN tipspiel__mannschaften AS heim ON heim.id = heimid
LEFT JOIN tipspiel__mannschaften AS gast ON gast.id = gastid
JOIN tipspiel__datum ON tipspiel__spieltag.id = spieltagnr
JOIN tipspiel__spieltag ON tipspiel__spiel.spieltagid = tipspiel__spieltag.id
WHERE spieltagid =1
AND tipspiel__spieltag.saisonid =1
ORDER BY datum ASC 
LIMIT 0 , 30

und erhalte als Ergebnis:

Spielnr-Spieltag-Heimteam----------------Gästeteam----------------------------- Ergebnis-Datum

1---------------1-----FC Bayern München--VFL Borussia Mönchengladbach-3 : 0----2005-08-05
2---------------1-----FC Schalke 04----------MSV Duisburg---------------------------1 : 1----2005-08-05
3---------------1-----SV Werder Bremen---1. FC Köln---------------------------------0 : 0----2005-08-05
3---------------1-----SV Werder Bremen---1. FC Köln---------------------------------0 : 0----2005-08-06
1---------------1-----FC Bayern München--VFL Borussia Mönchengladbach-3 : 0----2005-08-06
2---------------1-----FC Schalke 04----------MSV Duisburg---------------------------1 : 1----2005-08-06
2---------------1-----FC Schalke 04----------MSV Duisburg---------------------------1 : 1----2005-08-07
3---------------1-----SV Werder Bremen---1. FC Köln---------------------------------0 : 0----2005-08-07
1---------------1-----FC Bayern München--VFL Borussia Mönchengladbach-3 : 0----2005-08-07

Das Problem ist, dass nur Spiel 1 am 05.08., Spiel 2 am 06.08. und Spiel 3 am 07.08. stattgefunden haben.
Kriege aber als Ergebnis alle Paarungen für jedes Datum geliefert.
Hoffe es war verständlich genug und vielen Dank für die Mühe.
 
Referenziert tipspiel__spiel.spieltagid auf tipspiel__spieltag.id?
Und referenziert tipspiel__datum.spieltagnr ebanfalls auf tipspiel__spieltag.id?

Dann wäre IMHO die Modellierung falsch, denn tipspiel__spiel.spieltagid müßte nach meinem Verständnis auf tipspiel__datum.id verweisen und dann natürlich auch eher datumid, spieldatumid oder ähnlich heißen.

Die Bedingung zur Verknüpfung mit der Tabelle tipspiel__datum müßte dann auch entsprechend angepasst werden. Wenn ich da richtig durchblicke, sollte sich das Problem damit erledigt haben.

Gruß hpvw
 
Aha :)
Das hilft mir aber leider nicht weiter. Versteh ich einfach nicht.
Das Problem ist doch, dass ich mehrere Daten an einem Spieltag haben kann.
Mal ein anderes Beispiel. Wie würde ich das denn machen, wenn ich an ein- und demselben Wochentag mehrere Vorstellungen (zB Kinovorstellungen) habe
 
Du trägst dann die "WochentagID" bei der Kinovorstellung ein und nicht, um bei dem Vergleich zu bleiben, die "Wochennummer".
Übertragen auf Dein Problem mußt Du beachten, dass ein Spiel nicht an einem Spieltag, sondern an einem "Datum" stattfindet. Der Spieltag ist bezüglich der zeitlichen Einordnung nicht eindeutig, da er mehrere Daten umfasst. Ordnest Du dem Spiel aber ein Datum (über die entsprechende ID) zu, ist die Verbindung eindeutig und es läßt sich auch zweifelsfrei auf den Spieltag schließen (über die in der Datums-Tabelle eingetragene SpieltagID).

Gruß hpvw
 
Hallo hpvw.

Habe jetzt in der Tabelle tipspiel__datum die Spalte spieltagnr in spieltagid geändert und die Abfrage etwas erweitert und es klappt.

Hier die neue Abfrage:

Code:
SELECT tipspiel__spiel.lfdnr AS Spielnummer, heim.verein AS Heimteam, gast.verein AS Gästeteam, CONCAT( heimtore, ' : ', gasttore ) AS Ergebnis, datum AS Datum
FROM tipspiel__spiel
LEFT JOIN tipspiel__mannschaften AS heim ON heim.id = heimid
LEFT JOIN tipspiel__mannschaften AS gast ON gast.id = gastid
JOIN tipspiel__datum ON tipspiel__spiel.day = tag
JOIN tipspiel__spieltag ON tipspiel__spiel.spieltagid = tipspiel__spieltag.id
WHERE tipspiel__datum.spieltagid =1
AND tipspiel__spiel.spieltagid =1
AND tipspiel__spieltag.saisonid =1
ORDER BY datum ASC 
LIMIT 0 , 30

Vielen Dank nochmal.
Irgendwann werde ich es nochmal verstehen. :p
 

Neue Beiträge

Zurück