PHP Portal » PHP Forum » Entwicklung » MySQL, PostgreSQL und SQL-konforme Datenbanken » Tabellen vergleichen

Tabellen vergleichen 

von
Member
Zitat
Hey Folks,

ich steh mal wieder vor einem Denkfehler.

Ich haben zwei Tabellen. In einer Tabelle sind Daten enthalten, die mit der anderen Tabelle verknüpft sind. Nur leider sind wegen eines Scriptfehlers, in der ersten Tabelle mehr Einträge als in der zweiten Tabelle.

Wie muss das SQL-Statment aussehen, damit ich mir alle Einträge anzeigen lassen kann, die nicht in der zweiten Tabelle stehen.

Tabelle1 enthält die Einträge die zuviel sind.

Code
1
2
3
4
5
6
SELECT * FROM tabelle1 a LEFT JOIN tabelle2 b ON( a.id_i = b.id_i ) WHERE b.id_i = ???

Werbung

Re: Tabellen vergleichen 

von
the Boss
Zitat
ich würde ist mit "nicht vorhanden" versuchen, also

Code
1
WHERE b.id_i IS NULL

:D

Re: Tabellen vergleichen 

von
Besucher
Zitat
Hallo Zusammen, ich hatte genau das selbe Problem und habe die beschriebene Lösung ausprobiert.
Das lustige dabei ist, wenn ich die Abfrage unter phpmyadmin eingebe funktioniert alles perfekt, auf meiner Seite in php bekomme ich allerdings als Ausgabe nichts (aber auch keinen Fehler).

Demzufolge gehe ich davon aus, das der Fehler bei mir im PHP-Code liegt.
Da ich kein Profi in dem Bereich bin, habe ich bis jetzt den Fehler leider nicht gefunden.
Vielleicht kann mir da einer weiterhelfen.

Mein php-code:

PHP Code
1
2
3
4
5
6
7
8
9
$sql_befehl="SELECT * FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID=Tabelle2.ID WHERE Tabelle2.ID IS NULL"; if ($resultat = $db->query($sql_befehl)) { while ($datensatz=$resultat->fetch_array()) { extract($datensatz); echo "$ID"; } } else { echo "fehler"; }


Danke im vorraus,
Gruß Micha

P.S.: Gibt es eigentlich eine Möglichkeit in php den kompletten Select-Befehlt auszugeben ohne immer jedes Element einzeln mit echo"... hinzuschreiben?

Re: Tabellen vergleichen 

von
the Boss
Zitat
versuche mal statt extract() ein print_r(), um zu sehen,
was überhaupt in deinem $datensatz drin ist.
Außerdem brauchst du kein "" um das $ID beim echo.

PS: den Select-Befehl würde ich zentral in der Datenbank-Klasse
beim ->query() ausgeben - also in der Methode.
Eventuell mit einem define, ala

PHP Code
1
2
3
if( defined( '_SHOW_SQL_' ) ) { echo $sql; }

dann brauchst du nur noch

PHP Code
1
define( '_SHOW_SQL_', true );

definieren, damit er alle SQL Anweisungen zeigt.

Schnellantwort