Wolfang Geschrieben 16. September 2009 Teilen Geschrieben 16. September 2009 hi, mein Name is Wolfang und wollt mal lieb fragen ob mir einer kurz weiterhelfen könnte. Wie kann ich zwei Tabellen mit INNER JOIN verbinden, weil ich möchte meine echos in eine Tabelle setzen und da is das bisl blöd mit den while schleifen. Deswegen würde ich gerne eine virtuelle Tabelle gerne haben wo man die 3 Spalten auslesen kann. Meine Datensätze stehen am Ende vom Beitrag. Es muß irgendwo beim ON der Fehler sein... Bin echt um jede Hilfe dankbar:) Ursprüngliches Script mit 2 while schleifen wo das verschachteln nicht möglich macht $sql2 = mysql_query("SELECT kat_thumb_up FROM admin_video_kategorie"); while($row2 = mysql_fetch_array($sql2)) { echo "<img src=/fsr/kategorie_video/kategoriebilder/".$row2['kat_thumb_up']."/>\n"; } $sql = mysql_query("SELECT DISTINCT katname, katid FROM admin_video ORDER BY katid"); while($row = mysql_fetch_array($sql)) { echo "<a href=/fsr/video.php?kat=".$row['katid'].">".$row['katname']."</a>"; } [/PHP] Und jetzt meine 2 Lösungsansätze wo jedoch leider nicht funktionieren: [PHP] $sql = ("SELECT admin_video_kategorie.kat_thumb_up,admin_video.katid,admin_video.katname FROM admin_video_kategorie INNER JOIN admin_video ON admin_video_kategorie.kat_thumb_up = admin_video.katname"); while($row = mysql_fetch_array($sql)) { echo "<img src=/fsr/kategorie_video/kategoriebilder/".$row['kat_thumb_up']."/>\n"; echo "<a href=/fsr/video.php?kat=".$row['katid'].">".$row['katname']."</a>"; } //2te Idee $sql = ("SELECT katid, katname FROM admin_video INNER JOIN admin_video_kategorie ON admin_video.kat_thumb_up = admin_video_kategorie.kat_thumb_up"); while($row = mysql_fetch_array($sql)) { echo "<img src=/fsr/kategorie_video/kategoriebilder/".$row['kat_thumb_up']."/>\n"; echo "<a href=/fsr/video.php?kat=".$row['katid'].">".$row['katname']."</a>"; } ///// Tabellen CREATE TABLE admin_video ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, katid varchar( 50 ) NOT NULL, katname varchar( 50 ) NOT NULL, video_up varchar( 100 ) NOT NULL, thumb_up varchar( 100 ) NOT NULL, land varchar( 50 ) NOT NULL, datum_ort varchar( 50 ) NOT NULL, baureihe varchar( 50 ) NOT NULL ) ; CREATE TABLE admin_video_kategorie ( kat INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kategorie varchar( 50 ) NOT NULL, kat_thumb_up varchar( 100 ) NOT NULL ) ; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 16. September 2009 Teilen Geschrieben 16. September 2009 Anhand Deines Tabellen Layouts ist mir nicht klar wie die Tabellen referenziert sind. Ein Join, egal welcher, muss zwei Tabellen anhand einer PK-FK-Beziehung verknüpfen. Außerdem ist mir völlig schleierhaft warum Du die "katid" auf der "video" Tabelle als VarChar deklarierst, aber auf der "katheogrie" Tabelle als int. Außerdem wäre der "katname" gegen die die 2. Normalform. Ich würde Dich bitte zunächst Deine Tabellen in die 3. Normalform zu bringen: Normalisierung (Datenbank) ? Wikipedia Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolfang Geschrieben 16. September 2009 Autor Teilen Geschrieben 16. September 2009 Danke für die schnelle Antwort erstmal:), mein Zeil ist es beide Tabellen zusammenfüge. Könnest du mir das bitte zeigen? Und müssen eigendlich alle Spalten angegeben sein auch wenn ich nur kat_thumb_up,katid und katname brauche? Tabelle "admin_video_kategorie" mit den Spalten (kat,kategorie,kat_thumb_up) Tabelle "admin_video" mit den Spalten (id,katid,katname,video_up,thumb_up,land,datum_ort ,baureihe) Der Primärchlüssel von "admin_video_kategorie" ist kat und von "admin_video" ist id. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 16. September 2009 Teilen Geschrieben 16. September 2009 Problem ist, das der KatName in die andere Tabelle gehört (Normalisierung), und dass dein Fremdsschlüssel vom selben Format (int) sein muss, wie die ID der zu joinenden Tabelle. Wenn dieses gegeben ist, kann man eine SQL-Abfrage über beide Tabellen designen, in der nur die benötigten Felder ausgegeben werden. Jetzt kommen (vor allem aufgrund der zweiten Bemerkung) nur Fehler raus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolfang Geschrieben 16. September 2009 Autor Teilen Geschrieben 16. September 2009 Das verstehe ich nicht so ganz. Könntest du das kurz verwirklichen weil auch nach studenlangen lesen komme ich nicht weiter:( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HelloHello Geschrieben 16. September 2009 Teilen Geschrieben 16. September 2009 Nun ich bin überhaupt neu in Foren, kenne das nicht, wo kann man seine Frage posten hier? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 17. September 2009 Teilen Geschrieben 17. September 2009 Könntest du das kurz verwirklichen weil auch nach studenlangen lesen komme ich nicht weiter:( Das wird niemand für Dich erledigen (können), denn einmal benötigt man für die Normalformen ein paar Daten und zweitens wird hier niemand wissen, wie Deine Tabellen auszusehen haben. Es wäre für jeden ein Ratespiel, das niemanden etwas bringt. Vor allem solltest Du verstehen was die Normalisierungen bewirken und warum man das macht. Der gepostete Wikipedia-Artikel enthält ein sehr ähnliches Beispiel, Du musst dieses nur auf Deine beiden Tabellen umsetzen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolfang Geschrieben 17. September 2009 Autor Teilen Geschrieben 17. September 2009 Wie meinst du Ratespiel? Es sind doch alle Angaben gegeben. Welche Spalte braucht jetzt nen anderen Typ. Möchte doch nur beide Tabellen in einen sql befehl vereinen, so das ich auf alle spalten zugreifen kann admin_video id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, katid varchar( 50 ) NOT NULL, katname varchar( 50 ) NOT NULL, video_up varchar( 100 ) NOT NULL, thumb_up varchar( 100 ) NOT NULL, land varchar( 50 ) NOT NULL, datum_ort varchar( 50 ) NOT NULL, baureihe varchar( 50 ) NOT NULL admin_video_kategorie kat INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kategorie varchar( 50 ) NOT NULL, kat_thumb_up varchar( 100 ) NOT NULL Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 17. September 2009 Teilen Geschrieben 17. September 2009 Wie meinst du Ratespiel? Es sind doch alle Angaben gegeben. Weil ich nicht weiß welche Spalten anhand welcher Beziehung verknüpft werden sollen. Ich kann mir zwar etwas zusammen reimen, aber das hilft relativ wenig. Möchte doch nur beide Tabellen in einen sql befehl vereinen, so das ich auf alle spalten zugreifen kann Ich weiß was Du willst und ich sage Dir, so wie Du es jetzt hast, geht es nicht, weil die Tabellen nicht in der dritten Normalform sind. Du solltest bei den Grundlagen der Datenbanktechnik beginnen und ein ERD entwerfen: Entity-Relationship-Modell ? Wikipedia wenn Du dieses dann hast überführst Du es in die Tabellen und bringst es in die dritte Normalform: Normalisierung (Datenbank) ? Wikipedia Poste dann einmal das ERD und die dazugehörigen Tabellenstrukturen, dann kann man auch Dir auch mit dem passenden SQL Statement helfen. Ein Datenbankdesign besteht nicht daraus, dass man einfach ein paar Tabellen anlegt, sondern diese auch richtig modelliert (und auch wenn es letztendlich nur 2 Tabellen sind) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 17. September 2009 Teilen Geschrieben 17. September 2009 Folgende Lösung wäre möglich: admin_video id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, katid INT NOT NULL, --> löschen: katname varchar( 50 ) NOT NULL, video_up varchar( 100 ) NOT NULL, thumb_up varchar( 100 ) NOT NULL, land varchar( 50 ) NOT NULL, datum_ort varchar( 50 ) NOT NULL, baureihe varchar( 50 ) NOT NULL admin_video_kategorie kat INT NOT NULL AUTO_INCREMENT PRIMARY KEY, katname varchar( 50 ) NOT NULL, kat_thumb_up varchar( 100 ) NOT NULL So könnte dein SQL- Befehl aussehen SELECT video_up, kat_thumb_up, katid, katname FROM admin_video, admin_video_kategorie, WHERE admin_video.katid = admin_video_kategorie.kat Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.