Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] znajdź rekordy, które w przynajmniej jednej kolumnie mają wartość 0
Forum PHP.pl > Forum > Bazy danych > MySQL
alekto
Mam taką tabelę:
TABELA
id / A / B / C / data


w kolumnach A/B/C mogę mieć wartość 1 lub 0. Data to zapis daty, np. 2013-06-05.

Chciałabym wyciągnąć wszystkie wiersze, w których:
- wartość 0 pojawia się w przynajmniej jednej kolumnie (A, B lub C) z założeniem, że dla tego rekordu dowolna kolumna A/B/C ma wartość 1.
- warunek jest spełniony dla określonej daty.

Jak to zrobić?

Próbowałam:

select ID
from tabela t1
where data = '2013-08-25'
and exists (select 1 from tabela where t1.id = id
or A <> '1'
or B <> '1'
or C <> '1'
or D <> '1')


ale to zupełnie nie to, czego szukam. Czy macie jakieś pomysły?
mmmmmmm
  1. WHERE a*b*c=0 AND a+b+c>0
thek
Zauważ, że może być tylko 0 lub 1... A więc wystarczy, że jest tylko jedno 0. Tym samym warunek spełnia wszystko co nie ma we wszystkich kolumnach 1, ale 1 musi wystąpić choć raz. Najbardziej ogólny przypadek więc to: suma wartości w interesujących nas kolumnach jest mniejsza niż liczba kolumn, ale jednosześnie choć jedna ma 1. Tu mamy 3 kolumny... a więc
  1. WHERE a+b+c BETWEEN 1 AND 2

W przypadku większej ilości odpowiednio:
  1. WHERE a+...+n BETWEEN 1 AND liczba_kolumn_brana_pod_uwagę-1
alekto
Takie proste i takei genialne, dziekuje baaasmiley.gif
sazian
równie dobrze można wykorzystać operator in tylko w nieco inny sposób niż się go widuje zazwyczaj, czyli
  1. 1 IN (A,B,C)
nospor
@sazian no wlasnie nie, bo twoj warunek lyknie pola gdzie wszedzie jest 1, a wyraznie jest zaznaczone, ze musi byc przynajmniej jedno 0
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.