Problem mit left joint abfrage

MrHankey

Mitglied
ich hab 2 tabellen und in beiden einträgen:




tabelle gruppen:
--------------------------------
grp_id | grp_name | grp_gruppe
--------------------------------

einträge:
-----------------
1 | gruppe1 | 1
2 | gruppe2 | 2
3 | gruppe3 | 3
-----------------


tabelle objekte:
-----------------------------
ob_id | ob_name | ob_gruppe
-----------------------------

einträge:

----------------
1 | objekt | 1
2 | objekt | 1
3 | objekt | 2
4 | objekt | 2
5 | objekt | 3
6 | objekt | 3
----------------


abfrage:
PHP:
$result = mysql_query("
SELECT gruppen.grp_name, objekte.ob_name
FROM gruppen
LEFT JOIN objekte ON gruppen.grp_gruppe = objekte.ob_gruppe
GROUP BY gruppen.grp_name
");   
while($row = mysql_fetch_array($result)) {     
	echo $row['grp_name'];
	echo "<br>";
 	echo $row['ob_name'];
	echo "<br><br>";	
}

die ausgabe sieht aber so aus:

gruppe1
objekt1

gruppe2
objekt3

gruppe3
objekt5


eigendlich solls aber so aussehen:

gruppe1
objekt1
objekt2

gruppe2
objekt3
objekt4

gruppe3
objekt5
objekt6


also objekt2, objekt4 und objekt6 fehlen aber warum?

übrings wenn ich denn query in PHPmyAdmin teste fehlen die 3 einträge auch
 
Hi,


leider habe ich keine Ahnung, wie die Syntax in MySQL ist. Unter Oracle würde es folgendermaßen funktionieren:

SELECT gruppen.grp_name, objekte.ob_name
FROM gruppen, objekte
where gruppen.grp_gruppe = objekte.ob_gruppe
GROUP BY gruppen.grp_name, objekte.ob_name
 
ah jetzt sieht die abfrage so aus

gruppe1
objekt1

gruppe1
objekt2

gruppe2
objekt3

gruppe2
objekt4

gruppe3
objekt5

gruppe3
objekt6
 
Wieso 2 Tabellen ?
Bisher hast du doch nur eine.
Klar, du joinst aus 2 Tabellen, bekommst aber bei einem Select nur eine zurück.
 
Du brauchst eigentlich keinen Left Join, da Du (bis jetzt) keine Null-Werte in der Tabelle hast, oder?

Also mit der von Movera vorgeschlagenen Syntax klappt es wohl, wenn Du da einfach die Tabellen vertauschst. Ansonsten sucht sich der Optimierer einfach die nächstbeste Zeile aus der Objekte Tabelle, die mit der Verknüpfungsklausel übereinstimmt.

PHP:
SELECT gruppen.grp_name, objekte.ob_name
FROM  objekte, gruppen
where gruppen.grp_gruppe = objekte.ob_gruppe
GROUP BY gruppen.grp_name, objekte.ob_name
 
ja die ausgabe sieht so aus

gruppe1
objekt1

gruppe1
objekt2

gruppe2
objekt3

gruppe2
objekt4

gruppe3
objekt5

gruppe3
objekt6


eigendlich ok nur wie mache ich jetzt das sie aus aussieht

gruppe1
objekt1
objekt2

gruppe2
objekt3
objekt4

gruppe3
objekt5
objekt6
 
So eine Ausgabe kannste meines erachtens nicht mit SQL erzeugen. Dass musst Du in deiner benutzten Sprache programmieren.
 

Neue Beiträge

Zurück