Verknüpfung zweier Tabellen

v0llmilch

Grünschnabel
Ich würde gerne einen kleinen Preisvergleich erstellen allerdings komme ich mit der Abfrage nicht ganz zurecht. Es geht darum das es ein Stammsortiment gibt, welches ich selber schon in die Datenbank eingepflegt habe. Nun vergebe ich an bestimmte Lieferanten/Hersteller Accounts, wo jeder dieser Hersteller/Lieferanten zu diesem Stammsortiment die eigenen Preise sowohl für Neue als auch Gebrauchte Produkte hinzufügen kann.

Jeder dieser Lieferanten erstellt sich quasi seine eigenen Preisliste zu diesem Stammsortiment. User können nun aus diesem Stammsortiment Artikel auswählen und in den Warenkorb legen.

Das klappt auch soweit ganz gut. Nun soll im zweiten Schritt ermittelt werden, wie der Gesamtpreis für die im Warenkorb liegende Bestellung , von jedem Lieferant/Hersteller lautet.

Beispiel:

1. Schritt:

User kauft Neu :
1 x Zahnbürste
2 x Zahnpasta
1 x Zahnseide​

2. Schritt:

Hersteller A bietet dir dieses Set für : 13,25 EUR
Hersteller B bietet dir dieses Set für : 16,15 EUR
Etc. ..

Ich denke mal das ich für die Grundabfrage folgende 2 Tabellen dafür benötige:

- warenkorb
- lieferanten_produkte

Die Tabelle des Warenkorbs sieht wie folgt aus:

WID = Warenkorb ID, Fortlaufende ID dieser Tabelle
AID = User ID
SID = Session ID
KID = ARTIKEL ID (Stammsortiment)
TYP = Neu oder Gebraucht
Menge = Anzahl der einzelnen Artikel​


Die Tabelle der Lieferanten_Produkte sieht wie folgt aus:

LPID = Fortlaufende ID dieser Tabelle
KID = ARTIKEL ID (Stammsortiment)
LID = Lieferant ID
PREIS= Einzelpreis für dieses Produkt
TYP= Neu oder Gebraucht​

Soviel erstmal zum bisherigen Aufbau. Ich bin kein PHP Profi deswegen bitte ich evtl. unschöne Programmierungsansätze zu entschuldigen.
Durch Google bin ich auch das Thema Verbinden von zwei Tabellen gestoßen und habe meinen ersten Ansatz wie folgt aufgebaut:

PHP:
$query= "SELECT lieferanten_produkte.KID,
				lieferanten_produkte.LID,
				lieferanten_produkte.PREIS,
				lieferanten_produkte.TYP,
				warenkorb.AID,
				warenkorb.SID,
				warenkorb.KID,
				warenkorb.TYP,
				warenkorb.MENGE


FROM lieferanten_produkte, warenkorb 

WHERE warenkorb.SID='$SID' && warenkorb.TYP='".$_GET['TYPSELECT']."' &&  lieferanten_produkte.KID = warenkorb.KID";

$result = mysql_query($query) or die(mysql_error());

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

echo'$row->KID';

}

Leider wird mir nichts ausgegeben. Ein Error erscheint auch nicht. Bin ich mit dieser Variante auf dem richtigen Weg oder ist das komplett für die Tonne?
Wäre super wenn mir dabei jemand helfen könnte.

lg
 
Jetzt habe ich es mal so probiert, aber auch da kommt leider kein Ergebnis zurück. Wobei ich meine gelesen zu haben das man solche Konstruktionen (Query in Query) vermeiden sollte.

PHP:
$query = mysql_query("SELECT * FROM warenkorb WHERE AID='$AID' && SID='$SID' && TYP='".$_GET['TYPSELECT']."' ");

while($warenkorb = mysql_fetch_array($query)){

	$subquery = mysql_query("SELECT * FROM lieferanten_produkte WHERE KID='".$warenkorb['KID']."' ");
	
	while($lieferanten_produkte = mysql_fetch_array($subquery)){
	
	echo $lieferanten_produkte['LPID'];
	
	}

}
 
Hallo

ich habe deinen Code jetzt mal genauer gelesen. Was du suchst sind Joins. Schaue dazu mal in der MySQL Doku nach :)
 
INNER JOIN und , (Komma) sind semantisch gleichwertig, wenn keine Join-Bedingung vorhanden ist: Beide erzeugen ein kartesisches Produkt zwischen den angegebenen Tabellen (d. h., jeder Datensatz in der ersten Tabelle wird mit jedem Datensatz in der zweiten Tabelle verknüpft).
 
@vOllmilch
wenn du nach dem Tutroal gegangen bist, solltes du mindestens eine AUsgeabe des SQLs haben.

Poste das mal hier, dann können wir über ein SQL sprechen und nicht mehr über in SQL in PHP verpackt.
 
Zurück