Mailinglisten-Archive |
> 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