Ausgabe verknüpfter Tabellen
Hi,
Folgendes Problem: ich möchte für meinen Fussballverein (Kreisklasse oder so) die Homepage etwas aufmöbeln und da soll u.a. auch ein Spielplan mit rein. Jetzt könnte ich zwar alles in eine Tabelle schreiben: Datum | Zeit | Heimmannschaft | Gastmannschaft Besser ist wohl, zwei Tabellen zu nutzen: Datum | zeit | manns_1_ID | manns_2_ID Da brauche ich die Mannschaften nur 1x zu erfassen. Eingabe klappt auch, die ID's der Mannschaften sind korrekt in der Spielplantabelle eingetragen; nur bei der Ausgabe haperts - das bekomme ich nicht gebacken; wäre nett, wenn mir jemand helfen würde: $termin_SQL="SELECT * FROM $table3,$table4,$table5 WHERE $table3.team_ID=$table4.team_ID AND $table3.sp_ort1_ID=$table5.ort_ID"; hier fehlt noch die $table3.sp_ort2_ID=$table5.ort_ID table3 ist der Spielplan, in table4 sind die Spielklassen (Männer, Junioren, Jugend usw. ) erfasst, table 5 ist für die Mannschaften von Gross Kleinau bis Klein Kleckersdorf. Eine Mannschaft lässt sich anzeigen, wie bekomme ich die Zweite angezeigt? Ausgabe sieht so aus: while($sp_termin=mysql_fetch_array($termin_result)){ <td><?php echo $sp_termin['sp_zeit'] ?></td> <td><?php echo $sp_termin['team_name'] ?></td> <td><?php echo $sp_termin['ort_bez'] ?></td> <td><?php echo $sp_termin['ort_bez'] ?></td> ->>> Problem !!! Die Sielplantabelle (table3) sieht so aus: sp_ID sp_date sp_zeit team_ID sp_ort1_ID sp_ort2_ID Die Mannschaftstabelle (table5): ort_ID ort_bez Gruss Klaus |
AW: Ausgabe verknüpfter Tabellen
Hi,
versuch mal folgendes SQL: SELECT t3.*,... FROM $table3 AS t3 INNER JOIN $table4 AS t4 ON t3.team_ID = t4.team_ID INNER JOIN $table5 AS t5 ON t3.sp_ort1_ID=t5.ort_ID (was steht eigentlich in $table4?? Unten erwähnst Du nur 2 Tabellen) Des weiteren ist ein SELECT * immer schlecht. Zähle hier besser die wirklich benötigten Felder auf. Grund: Du kannst so nicht sicherstellen, in welcher Reihenfolge die Felder kommen. Des weiteren ist die Gefahr, daß nach einer Tabellenänderung (z.B. Erweiterung um ein weiteres Feld), Deine auf dieses Statement aufbauenden Skripte nicht mehr laufen, zig-fach größer. HTH, Andy |
AW: Ausgabe verknüpfter Tabellen
Zitat:
Hi Any, danke für die Antwort. Mir fehlt aber noch die Ausgabe des 2. Partners: wie bekomme ich den über die while-Schleife angezeigt? Das ist mein eientliches problem an der Stelle. Hast Du da einen Tipp? P.S. Nachfrage: wenn ich statt SELECT * die Felder angebe, ist dann die Reihenfolge der Angabe im SELECT gleichbedeutend mit der Ausgabe, d.h., kann ich so schon eine "Sortierung" vornehmen? in table4 sind die Spielklassen (Männer, Junioren, Jugend usw. bis Bambini) erfasst team_ID team_name Gruß Klaus |
AW: Ausgabe verknüpfter Tabellen
Hi Klaus,
sorry für die späte Antwort, hatte gestern Nachmittag eine Besprechung. Zitat:
Meinst Du eine Sortierung im Sinne von, z.B., einer alphabetischen Ausgabe der Vereinsnamen lautet die Antwort ganz klar NEIN. Hier mußt Du das SQL- Statement um ein ORDER BY (eventuell in Verbindung mit GROUP BY, wenn Du z.B. alle Spiele von Manschaft A als erstes, dann die Spiele von Mannschaft B als zweites ausgeben willst) ergänzen. Meinst Du eine Sortierung im Sinne von "ich möchte zuerst den Mannschaftsnamen, dann den Ortsnamen und dann den Trainernamen bekommen" lautet die Antwort JA. Je nachdem, wie Du die Ergebnisse des SELECTs in php- Variablen überführst ist dies relevant bzw. egal. Bei Deiner Methode mit mysql_fetch_array() ist dies egal, bei der von mir meistens angewandten Methode mit mysql_fetch_row() ist dies sehr wichtig. Zu Deinem Problem: Wenn ich es richtig gesehen habe gibst Du zweimal die gleiche Ortsbezeichnung aus. Ansonsten sieht der Code für die Ausgabe korrekt aus. Bzgl. Deiner Tabelle table3 (bei mir: spiele) würde ich Dir empfehlen, diese folgendermaßen zu ändern: spielid (primary key, autoincrement) mannsch1 (id der ersten Mannschaft) mannsch2 (id der zweiten Mannschaft) klassenid (Spielklasse) spielortid (kann, muß aber nicht gefüllt sein, wenn Spielort = Heimatort der ersten Mannschaft) spieldatum (und Uhrzeit) resultat (oder aufgeteilt auf torem1,torem2 (Tore der Mannschaft 1,..)) table4 (klassen) enthält die Spielklassen table5 (vereine) die Vereinsnamen, verknüpft mit table4 über die klassenid, mit table6 über die ortsid table6 (orte) enthält die Ortsnamen So, wie Du es mit zwei Orts-ids gemacht hast kommst Du nur dann an die zweite Mannschaft, wenn es in deren Ort nur genau einen Verein gibt. SELECT v1.vereinsname,o1.ortsname,v2.vereinsname,o2.ortsname,03.ortsname AS spielort,k.spielklasse,... FROM vereine AS v1 INNER JOIN orte AS o1 ON v1.ortsid = o1.ortsid // Mannschaft 1 mit Heimatort INNER JOIN spiele AS s1 ON v1.vereinsid = s1.mannsch1 INNER JOIN orte AS o3 ON s1.spielortid = o3.ortsid // Spielort INNER JOIN vereine AS v2 ON s1.mannsch2 = v2.vereinsid // jetzt bekomme ich die gegnerische Mannschaft INNER JOIN orte AS o2 ON v2.ortsid = o2.ortsid // Heimatort der zweiten Mannschaft INNER JOIN klassen AS k ON s1.klassenid = k.klassenid WHERE spieldatum = [was auch immer] AND k.spielklasse LIKE 'kreisklasse a' AND ... HTH, Andy P.S.: Benenne Deine Tabellen immer dem Inhalt entsprechend. Generische Tabellennamen wie table1 etc. sind immer schwer zu handeln, wenn es an die SQLs geht. |
AW: Ausgabe verknüpfter Tabellen
Hallo Andy,
der Tipp mit mysql_rows war der entscheidende - jetzt hab ichs! Vielen Dank. Gruss Klaus. P.S. Bei Deinem SELECT - Beisp. blicke ich allerdings noch immer nicht ganz durch | -]. |
AW: Ausgabe verknüpfter Tabellen
Hi Klaus,
ist doch ganz einfach ;-) Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Les' in einschlägigen SQL- Dokus mal etwas über n:m- Beziehungen sowie Zwischentabellen (hier: Tabelle "spiele") nach. Des weiteren solltest Du Dir die Syntax des SQL Befehls (INNER) JOIN noch mal ansehen. Ein INNER JOIN ist im Prinzip nichts anderes als das, was Du mit SELECT t1,*,t2.* FROM t1,t2 WHERE t1.id = t2.id gemacht hast. Allerdings um ein vielfaches performanter, da hier nicht die ganze Tabelle durchsucht werden muß. HTH, falls nicht beschreib Dein Problem etwas genauer und ich versuche, Dir besser zu helfen ;-) Andy |
AW: Ausgabe verknüpfter Tabellen
Zitat:
|
AW: Ausgabe verknüpfter Tabellen
@Coding:
Ich hätte meinen Smiley doch noch größer machen sollen ;-) Gruß, Andy |
AW: Ausgabe verknüpfter Tabellen
Hi,
die Erläuterung des Beispiels war super - habe ich kapiert. Danke. Mir war in dem "komplizierten" Ausdruck am Anfang die Bedeutung der Aliase vor dem FROM und das ON unklar. Glaube nun, verstanden zu haben. In unterschiedlichen Tuts u. Beispielen wird das ja auch unterschiedlich beschrieben, für Anfänger nicht immer einfach zu durchschauen... Gruss Klaus. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:22:23 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.