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