phpbar.de logo

Mailinglisten-Archive

SELECT - aus zwei mach einen ?!?

SELECT - aus zwei mach einen ?!?

Cybot 4t2.com-mysql at tekkno4u.de
Die Jul 15 16:44:24 CEST 2003


> Ich kann anhand meiner ID (autoincrement) nicht unterscheiden, ob es
> sich um ein Bild oder eine Karte handelt, das habe ich bisher über ein
> anderes Feld in der DB unterschieden. Jetzt im Warenkorb muß ich das
> aber können, den danach richtet sich meine SQL-Abfrage und der weitere
> Ablauf -  ich habe nur die ID. 
> Ich müsste also pro Artikel zwei Abfragen machen:
> 
> SELECT art WHERE ID=$id
> if art = "K"{
> 	  SELECT a,b,c LEFT JOIN x WHERE ID=$id
>   plan_a();
> } elseif art = "P" {
> 	  SELECT d,e,f LEFT JOIN y WHERE ID=$id
>   plan_b();
> } else {
> 	  SELECT g,h,i LEFT JOIN z WHERE ID=$id
>   plan_c()
> }
> 
> Gibt es ein Möglichkeit das in eine SELECT-Abfrage zu packen?

Warum wählst du nicht einfach alles und entscheidest dann erst in der 
Middleware welche Felder du verwendest? Weiß ja nicht wie groß der 
gesamte JOIN dann wäre...

anonsten gäbe es do nach das CASE
http://www.mysql.com/doc/en/Control_flow_functions.html#IDX1168

und Benutzer-Variablen
http://www.mysql.com/doc/en/Variables.html

ich habs noch nie probiert aber eventuell geht es das du per CASE eine 
Variable setzt in der dann die richtige Tabelle steht die du brauchst 
für dein LEFT JOIN

keine Ahnung ob das geht da ich nicht genau weiß in welcher Reihenfolge 
MySQL diese Bedingungen auf die Tabellen haut und die Variablen 
umsetzt... mhm

oder du machst ein LEFT JOIN auf alle Tabellen...

*ungeprüft*

SELECT *
FROM `tabelle`
  LEFT JOIN `x`
   ON `tabelle`.`ID` = `x`.`ID`
   AND `tabelle`.`art` = "K"
  LEFT JOIN `y`
   ON `tabelle`.`ID` = `y`.`ID`
   AND `tabelle`.`art` = "p"
  LEFT JOIN `z`
   ON `tabelle`.`ID` = `z`.`ID`
   AND `tabelle`.`art` NOT IN ("K", "p")
WHERE `tabelle`.`ID` = $id

oder so ähnlich...

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive