MYSQL:Alle Datensätze finden, deren PK nicht in einem anderen Datensatz ist

  • #1
H

HendrikO

Bekanntes Mitglied
Themenersteller
Dabei seit
01.04.2005
Beiträge
60
Reaktionspunkte
0
Hallo beisammen,

ich hab eine MYSQL-Datenbank erstellt in der es mehrere Tabellen gibt. Ziel des Ganzen ist eine Adressverwaltung. Ich habe jetzt eine Tabelle Adresse in der der Hauptdatensatz drin ist und eine Tabelle Ort. Einem DS in Tabelle Adresse ist eine Spalte für den Foreignkey zur Tabelle Ort.

Ich möchte jetzt alle Datensätze aus der Tabelle Ort in PHP aufgelistet bekommen, deren ID nicht als Foreignkey in einem Datensatz der Tabelle Adresse enthalten sind. Also alle nicht benutzten Orte sozusagen. Mein Ansatz war:

Code:
<?
$sql=SELECT .ORT..* 
		FROM .ORT.
		LEFT JOIN .BEGLEITER. ON .ORT..ID = .BEGLEITER..ORT_fk;
$result= mysql_query($sql) or die(mysql_error());
$all=mysql_fetch_assoc($result);
print_r($all);
?>

Diese Abfrage gibt mir jedoch immer nur einen Datensatz aus (Der allerdings wirklich keinen Gegenüber in Tabelle Adresse hat ;)).

Wahrscheinlich ist die Lösung ganz einfach, ich komm nur nicht drauf.

Bitte um Hilfe.
 
  • #2
Code:
<?php
$sql =->SELECT t1.* FROM tbl_orte t1 LEFT JOIN tbl_begleiter t2 ON t1.id = t2.ort_fk WHERE t2.ort_fk IS NULL';
?>
 
  • #3
Hmm, er schmeißt mir das selbe Ergebnis raus. Also nur ein Datensatz, obwohl es min. 20 Ortsdatensätze gibt, die nicht verwendet werden. Muss ich das in einer Schleife verpacken? Von der Logik her, müssten doch alle Datensätze ausgegeben werden, deren ID nicht in der Tabelle Begleiter stehen oder? Danke für den Ansatz. :)
 
  • #4
OK, dann halt im ganzen ;)

Code:
<?php
mysql_connect(localhost,xxx,xxx);
mysql_select_db(test_db);

$sql =->SELECT t1.* FROM tbl_orte t1 LEFT JOIN tbl_begleiter t2 ON t1.id = t2.ort_fk WHERE t2.ort_fk IS NULL';
$resID = mysql_query($sql);
echo <h2>Orte die nicht in Tabelle Begleiter verwendet wurden</h2>;
while($row = mysql_fetch_object($resID)) {
	echo $row->id. - .$row->ort.<br />;
}
?>

BTW:

mit mysql_fetch_assoc holst du eh nur einen Datensatz aus der Ergebnismenge ;)

=> http://de.php.net/manual/de/function.mysql-fetch-assoc.php
 
  • #5
Juchuu der wars . :D
Das mit dem mysql_fetch_objects kannt ich noch nicht. Gleich wieder was gelernt  mml. Besten Dank. Ich mach dann dem Thema mal das Licht aus 
 
Thema:

MYSQL:Alle Datensätze finden, deren PK nicht in einem anderen Datensatz ist

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben