Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] znajdź rekordy, które w przynajmniej jednej kolumnie mają wartość 0
alekto
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 10.06.2013

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 04:54