SQL Abfrage ?!?! HILFE!

N’abend,

ich weiss das es eigentlich nur ein ganz simpler Fehler sein kann, aber ich komme halt nicht drauf.

$sql = „SELECT alkfrei.*, longdrinks.*, cocktails.* FROM alkfrei, longdrinks, cocktails“;
$result = mysql_query($sql);

ist die Abfrage aus der dann weiter unten im HTML-Tag mit einer

while ($zeige=mysql_fetch_array($result)) { ?>
echo $zeige[„name“]; } ?>

alle Name der Drinks ausgegeben werden sollen. Leider bekomme ich 1. nur die Namen von der Tabelle ‚longdrinks‘, 2. die Namen sooft wie Einträge in der DB sind also jeden Namen um die 30 mal hintereinander.

Kann mir einer helfen? Danke im voraus. Locke78

Hallo,
Nun es sieht so aus, als dass Du nicht sehr viel Ahnung von DBs hast.
Zuerst mal ein paar Annahmen meinerseits.

Es sieht so aus, als möchtest Du Drinks abspeichern. Diese sind in drei Gruppen unterteilt. alkfrei, longdrinks, cocktails. Du hast daraus drei Tabellen gemacht. Das ist aus der relationalen Sicht falsch.
Eigentlich sollte das doch so aussehen:
Es gibt eine Tabelle drinks und eine Tabelle drink_typ
die tabelle drink_typ enthält als Werte:

id typ


1 alkfrei
2 longdrinks
3 cocktails

die tabelle drinks enthält dann eine id, den namen, die zutaten und den drink_typ (Fremdschlüssel)

id name zutaten drink_typ


1 cuba libre … 2

Damit du nun alle Namen holen kannst, musst du nur
SELECT name from drink;

Dann hast Du alle was Du brauchst.

Ich empfehle Dir ein Buch über Datenbanken und Datenmodelierung zu kaufen. Denn das Datenmodel ist entscheidend für die Performance und Wartbarkeit deiner Applikation.

Viele Grüsse
Simon

Es sieht so aus, als möchtest Du Drinks abspeichern. Diese
sind in drei Gruppen unterteilt. alkfrei, longdrinks,
cocktails. Du hast daraus drei Tabellen gemacht. Das ist aus
der relationalen Sicht falsch.

Eigentlich sollte das doch so aussehen:
Es gibt eine Tabelle drinks und eine Tabelle drink_typ
die tabelle drink_typ enthält als Werte:

id typ


1 alkfrei
2 longdrinks
3 cocktails

die tabelle drinks enthält dann eine id, den namen, die
zutaten und den drink_typ (Fremdschlüssel)

id name zutaten drink_typ


1 cuba libre … 2

Damit du nun alle Namen holen kannst, musst du nur
SELECT name from drink;

Dann hast Du alle was Du brauchst.

Vorausgesetzt, er hat Einfluss auf das DB-Design :wink:
Ansonsten würde eine UNION das gewünschte Ergebnis liefern.
Mit MySQL funktioniert das aber erst ab Version 4.

Stefan

Oder noch einfacher. Je ein Select pro Tabelle.

SQL Abfrage ?!?! HILFE!!! die 2. :wink:
Hmm… irgendwie kam mein Problem nicht wirklich rüber. Hier nochmal die Fakten. Also ich habe eine DB, in dieser DB sind 3 Tabellen. Diese Tabellen stehen in keinerlei Verbindung. Nun möchte ich mit einer SELECT Anweisung alle Namen aus den 3 Tabellen rauslesen lassen.

MfG Locke78

Hallo Locke,

Also nochmal:
Lösung 1: Wenn Du kannst ändere das Datenmodell.
wenn nicht
Lösung 2: dann sind drei Selects, weil, wie du schon sagst, die Tabellen in keiner Beziehung zu einander stehen.

Gruss, Simon

Ansonsten würde eine UNION das gewünschte Ergebnis liefern.
Mit MySQL funktioniert das aber erst ab Version 4.

dann ginge noch ein workaround wie hier beschrieben:
http://www.jinxidoru.com/tutorials/union.html

Hi,

$sql = „SELECT alkfrei.*, longdrinks.*, cocktails.* FROM
alkfrei, longdrinks, cocktails“;
$result = mysql_query($sql);

Mach lieber n sauberes INNER JOIN oder RIGHT JOIN, wobei immer eine ID in der einen Tabelle mit einer ID in der zweiten Tabelle uebereinstimmen muss…

Falls das Problem weiterhin besteht, benoetige ich Deine DB-Struktur, dann helfe ich Dir gerne beim Design deiner DB weiter…

cu,

cjmatsel

hi,

wenn der das feld ‚name‘ in allen 3 tables vorkommt, mußt ihnen im sql-statement einen alias geben,
z. B.
$sql = "SELECT alkfrei.name as alkfreiname, longdrinks.name as longdrinkname…
ansonsten weiß die die routine nicht,
welches feld von welcher table gemeint ist und gibt dir eben nur die erste aus.

cu
harald