2013-03-11 15 views
5

Mam tabelę z polem type.jak mogę napisać instrukcję IF w mysql

jak mogę sprawdzić to pole w kwerendzie:

Chcę sprawdzić, czy type == 'a'

następnie bes = amount, bed = '-'

ELSE bed = amount, bes = '-'

bes i łóżko tak naprawdę nie istnieje w moim stole, ale kwota to (int)

to moja próba:

SELECT billing.*, 
    CASE billing.type WHEN 'A' THEN billing.amount AS bes, '-' AS bed ELSE billing.amount AS bed, '-' AS bes END 
    FROM billing 

... moje pytania nie była przydatna

każde rozwiązanie ...

+0

Jak widać, wszyscy jesteśmy bardzo zgodni co do właściwego rozwiązania tutaj :-) –

+0

ów dobrych ... Kiedy próbuję to w osobnym zapytaniu, nie ma problemu, ale w moim projekcie .. błąd – Pooya

+0

głosowanie dla wszystkich – Pooya

Odpowiedz

5

Można tworzyć warunki dla każdego wiersza, MySQL obsługuje inlineIF oświadczenia.

SELECT billing.*, 
     IF(billing.type = 'A', billing.amount, '-') AS bes, 
     IF(billing.type = 'A', '-', billing.amount) AS bed 
FROM billing 
3

Jeden CASE-WHEN-THEN-ELSE może mieć tylko jedną wartość powrotną ...

To powinno wystarczyć:

SELECT billing.*, 
CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' END AS bes, 
CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount END AS bed 
FROM billing 
4

Musisz dwa oświadczenia, że ​​skrzynka dla:

SELECT billing.*, 
    CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' AS bes END, 
    CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount AS bed END 
FROM billing 
3
SELECT billing.*, 
    CASE WHEN billing.type = 'A' THEN billing.amount ELSE 0 END AS bes, 
    CASE WHEN billing.type <> 'A' THEN billing.amount ELSE 0 END AS bed 
FROM billing 
2

zależności od wersji MySQL, można użyć IF lub jednym z dwóch różnych składni dla CASECASE (1), CASE (2).

SELECT *, 
    (IF type = 'A' THEN amount ELSE '-' END IF) bes, 
    (IF type = 'A' THEN '-' ELSE amount END IF) bed 
FROM billing 
Powiązane problemy