# Daten aus zwei Tabellen verbinden(SQL)



## goto; (23. Januar 2010)

Hallo,
ich bins mal wieder,
momentan steh ich auf dem Schlauch, haben das Thema zwar schon mal besprochen, dennoch bekomm ich es nicht hin.
Habe zwei Tabellen, in der ersten Sind die Kategorien, in der zweiten sind die Unterkategorien.. Die Normalen Kategorien haben eine ID mit dieser ordnen sich die unterkategorien unter.

Wie folgt sieht der Query aus.

```
SELECT
*
FROM
(

   SELECT 
   GROUP_CONCAT('<a href=http://', name, '></a>') AS link,
   u_id
   FROM
   adminmenu_sub   
    
    
    )AS a
    LEFT JOIN adminmenu
    ON (a.u_id = adminmenu.id)
```
Wie zusehen ist, ist u_id ( Unterkategorie ) == id ( Kategorie ).
problem ist, das die Unterkategorien sich nicht Trennen lassen. Sobald ich eine Kategorie mit der id 26 durchlaufen lasse, gibt er mir die Unterkategorien mit der u_id = 26 aus, aber auch die restlichen mit 28..30 etc.
Was mache ich falsch?


----------



## planb2000 (24. Januar 2010)

Hi,

benutze ein INNER JOIN, dann bekommst Du nur die Items die sich in beiden Tabellen befinden, dies können
dann aber potentiell mehrere sein, wenn der Schluessel in Deiner Unterkategorie mehrfach verwendet wurden.

Grüße


----------



## goto; (24. Januar 2010)

Hallo, danke für deine Antwort, leider ist das noch nicht der Fehler,
Weiß nicht wie ich es deutlicher Darstellen soll. Vielleicht mit einem Bild.
Siehe Anhang


----------



## Yaslaw (25. Januar 2010)

Ich versteh nicht, was du willst.
 Dein Subquery fasst mit einem GROUP_CONCAT Daten zusammen ohne das du ein GROUP_BY hast.

Dein inneres Query sollte mMn etw so aussehen

```
SELECT 
	GROUP_CONCAT('<a href=http://', name, '></a>') AS link,
	u_id
FROM 
	adminmenu_sub
GROUP BY 
	u_id
```

Der LEFT Join sollte vom Parent zum Chield gehen und nicht umgekehrt
Am Ende dan etwa so


```
SELECT
	parent.id,
	parent.name AS parent_name,
	sub.link
FROM
	adminmenu AS parent
	LEFT JOIN (SELECT 
					GROUP_CONCAT('<a href=http://', name, '></a>') AS link,
					u_id
				FROM 
					adminmenu_sub
				GROUP BY 
					u_id)AS sub
	ON (parent.id = sub.u_id)
```


----------

