PHP 3 Werte aus 2 Tabellen abgleiche; dreifache Ausgabe des selben Eintrages

LoOni3r

Active member
25 Februar 2014
40
0
Halo zusammen,

mit diesen code:

PHP:
$query = "SELECT * FROM tabelle1, tabelle2 WHERE
tabelle1.wert1='0' AND tabelle1.wert2 LIKE '%wert2%' AND tabelle2.wert3 LIKE '%wert3%'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){

echo "$row[text]<br />";
}

möchte ich alle Einträge von tabelle1 ausgeben, bei denen 3 Werte aus 2 verschiedenen Tabellen übereinstimmen.

Ausgabe funktioniert auch, nur bekomme ich jeden Eintrag in tabelle1 immer 3x angezeigt.

Mit LEFT JOIN das selbe :\

Leider verstehe ich nicht warum das so ist, hoffe mir kann jemand auf die Sprünge helfen.

Gruß LoOni3r
 
Hallo Moloc,

danke für deine Antwort aber auf diesem Weg wird jeder Eintrag ebenfalls 3x angezeigt.

Mit "tabelle2.wert3 LIKE '%wert3%'" (wert3 ist: 100100100,100100101,100000000,100100102,) suche ich die UserID heraus.

Mit "tabelle2.wert3 = '100100100,100100101,100000000,100100102,'" werden mir die Einträge nur 1x ausgegeben.

Komme einfach nicht dahinter wo das Problem ist.

Gruß LoOni3r
 
Hast du die Tabellen auch richtig miteinander verknüpft?

Sowas in der Art?

Code:
INNER JOIN tabelle2 ON (tabelle1.primarykey = tabelle2.foreignkey)

Irgendwie musst du ja sagen können, welche Werte von Tabelle2 zu welchem Eintrag in Tabelle 1 gehören oder umgekehrt.
 
Auf Provisionen verzichten... :ugly:

Mit LIKE '%wert% bekommst Du alle Datensätze die der Bedingung (Zeichensalat)wert(mehrZeichensalat) genügen, wenn wert leer ist praktisch die ganze Tabelle2. Du suchst aber gleiche Werte, sinngemäß also so etwas wie ... tabelle2.wert2=tabelle1.wert2 AND tabelle2.wert3=tabelle1.wert3
 
habe es nun endlich geschafft, das Zauberwort heißt UNIOL ALL

PHP:
$query = "SELECT * FROM tab1
WHERE wert1='0' AND wert2 LIKE '%$user_id%'
UNION ALL
SELECT * FROM tab2
WHERE wert1='0' AND wert2 LIKE '%$user_id%'
UNION ALL
SELECT * FROM tab3
WHERE wert1='0' AND wert2 LIKE '%$user_id%'
ORDER BY time DESC"; 
$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)){
....

wie erfahre ich nun in der Ausgabe, ob der Eintrag aus tab1, tab2 oder tab3 stammt?

Gruß LoOni3r
 
Du kannst deinen SELECT Befehlen auch beliebige statische Werte hinzufügen und so die Quelltabelle ermitteln.

PHP:
"SELECT *, 'tab1' AS `source` FROM `tab1` UNION ALL SELECT *, 'tab2' AS `source` FROM `tab2`"
 
danke, habe es nun so gelöst, dass ich ein neues Feld mit dem Tabellenname aufgenommen habe.