[PHP/MySQL] Komplexe Datenbankabfrage

flaschenkind

Well-known member
ID: 118459
L
20 April 2006
4.507
337
Ich programmiere gerade ein Lizenzscript. Jetzt mache ich gerade eine Übersicht der LIzenzbesitzer, wo auch das Script steht.
Es gibt drei Tabellen:
lizenzen_kunden
id int(10) auto_increment,
name varchar(255),
(die andern Felder sind unwichtig)

lizenzen_lizenzen:
id int(10) auto_increment,
kunde int(10),
script int(10),
website varchar(255);

lizenzen_scripts:
id int(10) auto_increment,
name varchar(255);
(die andern Felder sind unwichtig)

Ich will jetzt in der Lizenzübersicht alle Kunden auflisten und die dazugehörigen scripts. Und der Name muss auch dazu ausgelesen werden, weil der ja auch wo anders steht ;)

Diese Lösung ist glaube ich zu Datenbanklastig:
Alle Kunden auslesen, dann für den Kunden die Scripts aus lizenzen_lizenzen auslesen ud dann für jedes Script den Namen aus lizenzen_scripts auslesen

Ich schätze mal, da gibt es eine bessere Lösung ;)
Mir fällt nur keine ein :(
Könnt ihr mir helfen? ;)
 
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B]
  `lizenzen_scripts`.`name` [B][COLOR=#9932cc]AS[/COLOR][/B] `scriptname`,
  `lizenzen_kunden`.`name` [B][COLOR=#9932cc]AS[/COLOR][/B] `kundenname` 
[B][COLOR=#9932cc]FROM[/COLOR][/B] `lizenzen_lizenzen` 
[B][COLOR=#9932cc]LEFT[/COLOR][/B] [B][COLOR=#9932cc]JOIN[/COLOR][/B] `lizenzen_kunden`
  [B][COLOR=#9932cc]ON[/COLOR][/B] `lizenzen_kunden`.`id`=`lizenzen_lizenzen`.`kunde`
[B][COLOR=#9932cc]LEFT[/COLOR][/B] [B][COLOR=#9932cc]JOIN[/COLOR][/B] `lizenzen_scripts`
  [B][COLOR=#9932cc]ON[/COLOR][/B] `lizenzen_scripts`.`id`=`lizenzen_lizenzen`.`script`
[B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] `lizenzen_lizenzen`.`id` [B][COLOR=#9932cc]ASC[/COLOR][/B][/FONT]
ungetestet
 
wow 8O
Ich verstehe davon nicht viel. Ich glaub, ich muss meine SQL Kentnisse mal deutlich erweitern :biggrin:
Ich teste es gleich mal.

EDIT: Funktioniert so soweit, vielen dank schonmal :D
Aber wenn ein Kunde 2 oder mehr Scripts hat, hätte ich die gerne zusammen. Geht das noch irgentwie über SQL? Sonst bastell ich nen umweg über in_array() und so ;)
 
Zuletzt bearbeitet:
Aber wenn ein Kunde 2 oder mehr Scripts hat, hätte ich die gerne zusammen. Geht das noch irgentwie über SQL? Sonst bastell ich nen umweg über in_array() und so ;)
Würde ich die Query umstellen, würdest du nur das erste Script erhalten, weitere würden ignoriert werden.

Du kannst allerdings die Sortierung ändern und nach dem Kunden sortieren:
Code:
[FONT=Courier New][FONT=Courier New][B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] `lizenzen_lizenzen`.`kunde` [B][COLOR=#9932cc]ASC[/COLOR][/B][/FONT][/FONT]
bzw.
Code:
[FONT=Courier New][FONT=Courier New][B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] [/FONT][/FONT][FONT=Courier New][FONT=Courier New]`lizenzen_kunden`.`name` [/FONT][/FONT][FONT=Courier New][FONT=Courier New][B][COLOR=#9932cc]ASC[/COLOR][/B][/FONT][/FONT]