PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Left Join


Vankin
14.11.2005, 17:04:02
Hallo Leutz,
ich bin neu hier und hoffe, dass mir HIER einer helfen kann. Ich habe das Problem, dass ich 2 Tabellen verknüpfen will und nicht genau weiß, was ich falsch mache bzw. ich glaube, dass ich einen logischen Denkfehler habe und deshalb nicht weiter komme. Ich schilder eben was ich 'basteln' möchte.

Ich habe also 2 Tabellen.
Tabelle 1 = sortiment
Tabelle 2 = s_empfehlung

In T1 sind die Produkte gespeichert mit den folgenden Feldern "id", "artikelnummer", "artikelname" etc.

In T2 möchte ich bis zu 25 "Artikelnummern" eingeben die sogesehen jeden Monat als 'Artikel des Monats' ausgegeben werden sollen. Die T2 hat also die Felder "s_e_id", "artik_01", "artik_02" etc.

Ich möchte also alle Artikel anzeigen lassen, die in T2 eingetragen sind.

Um Euch einen Überblick über meinen Code zu geben, will ich mal von vorne anfangen. Die Ausgabe soll über eine while Schleife erfolgen.

<?
$host = localhost;
$user = xxx;
$pass = yyy;
$db01 = zzz;
$tb01 = sortiment;
$tb02 = s_empfehlungen;

mysql_connect($host,$user,$pass);
mysql_select_db($db01);

$antwort = mysql_query ("SELECT * FROM $tb01 as s RIGHT JOIN $tb02 as e ON s.artikelnummer = e.s_e_id ORDER BY herkunftsland LIMIT 0,4");

while ( $datensatz = mysql_fetch_array($antwort) ):

?>

Wenn ich mir den Code anschaue, dann weiß ich, dass mein 'Denkfehler' in der select abfrage liegt. *smile*
Ich will mich kurz erklären: ON s.artikelnummer = e.s_e_id kann ja nicht richtig sein!!! oder?
Ich habe bis zu 25 Artikel in T2 stehen und wenn ich es so ausgebe, ich es oben beschrieben hab, dann passiert nicht! Ich denke mir, dass s.artikelnummer ja NICHT = e.s_e_id sein kann, weil e.s_e_id ja zb. 5 ist und dann kein passender eintrag gefunden werden kann...RICHTIG?
Also müsste ja eigentlich....und an dieser Stelle komme ICH gerade nicht weiter!!!! Kann mir einer auf die Sprünge helfen??

xabbuh
16.11.2005, 19:54:36
Wenn ich das richtig sehe, muss der Datensatz in beiden Tabellen vorkommen. Dafür ist ein INNER JOIN wesentlich besser geeignet:

SELECT
t1.id,
t1.artikelnummer,
t1.artikelname,
t2.s_e_id,
t2.artik_01,
t2.artik_02
FROM
sortiment AS t1
INNER JOIN
s_empfehlung AS t2
ON
t1.id = t2.s_e_id


P.S.: Dass die Variablenzuweisung am Anfang deines Scriptes Unsinn ist, hast du aber schon gemerkt? ;-)