• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

MySQL-problem

Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
hm jo, steh grade irgendwie aufm schlauch.

also ich wollte mit einem query folgendes erreichen:
3 tabelle sollen linear verknüpft werden... das is ja net das problem, nur halt die ausgabe...

das ganze ist für nen projekt von mir für nen kumpl, der fotografiert busse und archiviert das ganze halt :ugly:

3 tabellen:

bereich, typ, kom

jeder kom ist nen typ zugeordnet, und jedem typen nen bereich

hab mal kleines fließdiagramm gemalt ...

struktur0on.jpg

€: sry, pfeile waren falsch 8[

der query is der folgende:

Code:
SELECT 
	bereich.name AS bereich_name,
	bustyp.name AS typ_name,
	bustyp.picture,
	kom.kom AS kom_name,
	kom.id_kom,
	kom.update,
	bustyp.id_type, bustyp.id_bereich, bereich.id_bereich
	FROM bereich,bustyp,kom
	WHERE
	(kom.id_type = bustyp.id_type) AND
	(bustyp.id_bereich = bereich.id_bereich)
	ORDER BY kom.kom ASC

mein ergebniss sieht dann quasi so aus:
Code:
bereich_name typ_name picture kom_name id_kom update id_type id_bereich id_bereich 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1027 4 1110052312 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1028 5 1110052355 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1029 6 1110052360 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1030 7 1110052365 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1031 8 1110052370 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1032 9 1110052374 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1033 10 1110052382 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1034 11 1110052385 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1035 12 1110052389 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1036 13 1110052393 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1037 14 1110052396 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1040 15 1110052489 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1041 16 1110052494 1 1 1 
Bereich 10xx (Solowagen bis 2001) MAN NL202 MANNL202.gif 1042 17 1110052498 1 1 1 
Bereich 10xx (Solowagen bis 2001) Van Hool A360 VanHoolA360.gif 1052 20 1110052645 2 1 1 
Bereich 10xx (Solowagen bis 2001) Van Hool A360 VanHoolA360.gif 1053 21 1110052648 2 1 1

also schema
bereich1 -> typ1 -> kom1
bereich1 -> typ1 -> kom2
bereich1 -> typ2 -> kom3
bereich1 -> typ3 -> kom4
bereich2 -> typ5 -> kom5
bereich2 -> typ5 -> kom6

usw...das ganze halt mit einem query. atm "filtere" ich das ganze per php raus 8[

möchte es aber gerne mit EINEM query
so haben:

Code:
bereich1->typ1->kom1
              ->kom2
          typ2->kom3
          typ3->kom4
bereich2->typ5->kom5
              ->kom6

hoffe ihr wisst was ich meine oO
thx im vorraus :)
 
Mitglied seit
03.08.2002
Beiträge
3.257
Reaktionen
14
Ich versuchs erstmal einfach

Code:
SELECT 
bereich.name AS bereich_name,
bustyp.name AS typ_name,
bustyp.picture,
kom.kom AS kom_name,
kom.id_kom,
kom.update,
bustyp.id_type, bustyp.id_bereich, bereich.id_bereich

FROM bereich

LEFT JOIN bustyp ON bereich.id_bereich = bustyp.id_bereich
LEFT JOIN kom ON bustyp.id_type = kom.id_type

ORDER BY kom.kom ASC

sofern das jetzt mit den feldnamen stimmt...

edit:
hm ne, ich glaube du willst es andersrum:

Code:
SELECT 
bereich.name AS bereich_name,
bustyp.name AS typ_name,
bustyp.picture,
kom.kom AS kom_name,
kom.id_kom,
kom.update,
bustyp.id_type, bustyp.id_bereich, bereich.id_bereich

FROM kom

LEFT JOIN bustyp ON kom.id_type = bustyp.id_type
LEFT JOIN bereich ON bustyp.id_bereich = bereich.id_bereich


ORDER BY kom.kom ASC
 
Mitglied seit
02.08.2002
Beiträge
2.781
Reaktionen
0
Original geschrieben von Picard)STF
[...]
Code:
bereich1->typ1->kom1
              ->kom2
          typ2->kom3
          typ3->kom4
bereich2->typ5->kom5
              ->kom6

hoffe ihr wisst was ich meine oO
thx im vorraus :)

wenn ich das richtig verstehe, dann willst du, dass in der ersten spalte NULL zurückgegeben wird, wenn die darüberliegende Zeile die gleichen bereichs_id hat.

das geht imo mit mysql nicht (ist auch nicht wirklich sinnvoll) - mit php ist das aber sehr einfach herauszufiltern (und das hast du ja anscheinend auch gemacht)
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
@butze: kommt ja aufs selbe drauf raus ;)
@eniman: jo, genau das meinte ich :)
wäre nice gewesen wenns gehen würde, wollte halt den php code nen bissi optimieren/kürzen^^

thx an euch 2 :)
 
Oben