Myqsl über mehrere Tabellen

vilafentia

Grünschnabel
Hallo Zusammen,

ich habe folgendes Problem:

Ich habe 3 Tabellen:
  • Bewertung
  • Kunde
  • Firma
In erster Linie will ich die Tabelle Bewertung auslesen.(Hier wird beispielsweiße auch ein eintrag welcher Kunde Bewertet hat festgelegt.)
Mit der Tabelle Kunde will ich dan überprüfen ob der Kunde überhaupt vorhanden ist.
Mit der Tabelle Firma will ich dan feststellen in welcher Firma der Kunde dan Bewertet hat.

Würde diese where funktion machbar wäre es einfach zu Realisieren, tut es leider nicht:

Die Firma habe ich festgelegt mit einer übergeordneten While

while( $row = mysql_fetch_object( $firma) ) {

$mitglieder = mysql_query("SELECT id.bewertung, punkte.bewertung , id.kunde FROM bewertung, kunde, firma WHERE $row->id.bewertung = $row->id.kunde ");

}

am besten sogar ohne bei den FROM das dort mehrere Tabellen abgefragt werden. Ich vermute das wird aber nicht funktionieren.

Hier geht es mehr darum WHERE zuzuweißen von welcher Tabelle es die id ausließt weil die abfrage so leider nicht passt.

In erster Linie versuch ich nur where abfragen mit bestimmten Werten über andere Tabellen abzufragen.

Ich hoffe ich hab das gut genug erklärt wenn nicht bitte nachfragen.
 
Zuletzt bearbeitet:
item: Du hast 3 Tabellen im FROM ohne dass du sie zusammenhängst (JOIN)

item: Du hast ein komischer WHERE. Du vergleichst die Firma.id.Bewertung des while mit der Firma.id.kunde des whiles.
Die Daten aus dem FROM werden gar nicht gefiltert. Entweder alle oder nichts.

item: Du griffst in deinem SQL auf den Alias id zu. Der ist aber im FROM-Teil nirgends drin

item: Dein SQL hat 3 Teile (SELECT, FROM, WHERE). Diese 3 Teile haben bei dir absolut keinen Zusammenhang. Das ist wie wenn ich Automarken aus einer Fahrradtabelle auslesen würde...

item: $row->id.bewertung. Woher kommt das id dazwischen? Was soll die .bewertung auf Stufe der Firma?

item: punkte.bewertung. Was ist punkte für eine Quelle?

item: Des weiteren stimmt deine Aussage, was du machen willst nicht mit dem Code überein.
Du schreibst die folgende Reihenfolge
Bewertung -> Kunde -> Firma
Damit findest du auch Bewertungen ohne Firma.

Im Code beginnst du bei der Firma
Firma -> Kunde -> Bewertung
Damit findest du nur Bewertungen, die einer Firma zugeteilt werden können

Ich geh mal vom 2ten aus, da du ja bereits über die Firma iterierst.
Die Firma muss nicht mehr im SQL stehen. Du hast sie bereits offen
Annahme: die Tabelle Firma hat das Feld id
SQL:
SELECT
    b.bewertung,
    k.name
FROM
    bewertung           AS b
    INNER JOIN kunde AS k ON b.kunde = k.id
WHERE
    k.firma = {$row->id}


Grundsätzlich, Deine 4 geposteten Codezeilen haben mMn mindestens 10 Fehler. Überleg nochmals was du genau haben willst und beginne neu und sauber.
 
Vielen Dank für die Rasche Antwort. Ich werde mir das noch einmal genau anschaun und mich dann wieder melden.
 
Zurück