Bobby: mysql, Abfrage, wenn var grösser 0, dann wert aus anderer Table

Beitrag lesen

Moin

SELECT a.name, b.ort, IF( a.art <> 0, (SELECT .......), a.art ) AS art FROM a, b

Genau das ist es, ich hab nur die beiden letzten beiden Werte vertauscht. Doch wie bekomme ich zwei Werte aus der zweiten Select Abfrage heraus? wert1 ,wert2, weil in das AS art geht nur eins rein, raus

SELECT a.name, b.ort, IF( a.art <> 0, (SELECT wert1,wert2 .....), a.art ) AS art FROM a, b

Indem Du das mit dem Subselect lässt und stattdessen Joins oder implicit Joins benutzt.

OK... wenn es mehr als ein Wert ist, dann natürlich mit JOINs arbeiten. Ich hatte es so verstanden, dass wenn ein Wert 0 ist dass dann _EIN_ anderer dies ersetzen soll. Da wärs mit dem Subselect die optimale Lösung gewesen.

Wenn es mehr Werte sein sollen dann auf alle Fälle mit JOINS

Tom, ich hatte es wirklich schon mal, dass subselects (wenn nur ein Wert rausgesucht werden soll) schneller sind als JOIN. Ich habe allerdings bis heute (aus Zeitgründen) noch nicht herausgefunden, warum das so ist. Ich vermute dies lag an der InnoDB-Engine. Es war alles ordentlich indiziert und mit den entsprechenden Fremdschlüsselbeziehungen versehen. Auch die Datenbankkonfiguration war auf große Datenmengen ausgerichtet.

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
### Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)