• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed SQLik do sprawdzenia

Object Storage Arubacloud
0 głosów
213 wizyt
pytanie zadane 12 czerwca 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 13 czerwca 2018 przez hiper007

Witam!

Mam pytanko. W bazie posiadam numery naczep samochodów (nr_naczepy) oraz statusy naczep (status_car) czy samochód 'Przyjechal', 'Wyjechał'. Chciałbym sprawdzić sqlem czy jakieś numery naczep nie mają dwóch różnych statusów: np. naczepa: NUER4233 nie ma statusu: "Przyjechał" i jednocześnie "Wyjechał".

Ale poniższy sql nie pokazuje poprawnie danych:

SELECT nr_naczepy FROM appt WHERE nr_naczepy!='' AND status_car='Przyjechał' AND  status_car='Wyjechał' GROUP BY nr_naczepy

Ma poprostu wypisać wszystkie naczepy, które mają dwa różne statusy.

Z góry dzięki ;)

komentarz zamknięcia: Problem rozwiązany
komentarz 12 czerwca 2018 przez niezalogowany
Czemu id samochodu wybierasz z dwóch tabel?
komentarz 12 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
ponieważ muszę jeszcze datę wyciągnąć, ale mam ją w innej tabeli, to mało istotne z tym już sobie poradzę.. chodzi mi tylko o te statusy......

2 odpowiedzi

+2 głosów
odpowiedź 12 czerwca 2018 przez Catalonya1992 Mądrala (5,440 p.)
wybrane 13 czerwca 2018 przez hiper007
 
Najlepsza
Daj znać czy pomogło :)

select nr_naczepy, count(distinct status_naczepy)
from appt
 WHERE nr_naczepy is null
AND (status_car='Przyjechał' OR  status_car='Wyjechał')
GROUP BY nr_naczepy
HAVING count(distinct status_naczepy)>1
komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
select nr_naczepy, count(distinct status_car) from appt WHERE nr_naczepy is null AND (status_car='Przyjechał' OR  status_car='Wyjechał') GROUP BY nr_naczepy HAVING count(distinct status_car)>1

SQL nie pikazuje nic ;) Mam np. dwie naczepy: 

1 naczepa: PZ02css specjalnie ustawiłem status na "Przyjechał" i "W drodze"

2 naczepa: po1eghf ustawiłem tylko status "Przyjechał"

SQL powienien wyrzucić naczepę PZ02css jaką tą która ma podwójny status.

a sql nie wyrzuca żadnej naczepy. ;)

1
komentarz 13 czerwca 2018 przez Catalonya1992 Mądrala (5,440 p.)
Rozumiem, że ustawienie  na "Przyjechał" i "W drodze" to 2 różne rekordy? Pokaż strukturę tabel, bo te zapytanie jest moim zdaniem poprawne.
komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)

;) Proszę bardzo

komentarz 13 czerwca 2018 przez Catalonya1992 Mądrala (5,440 p.)

W komentarzu wyżej pisałeś, że chodzi Ci o statusy Przyjechał, Wyjechał. Tutaj masz "W drodze", więc trzeba zmienić:
SELECT   nr_naczepy, COUNT (DISTINCT status_car)
    FROM appt
   WHERE nr_naczepy IS NOT NULL
     AND (status_car = 'Przyjechał' OR status_car = 'W drodze')
GROUP BY nr_naczepy
  HAVING COUNT (DISTINCT status_car) > 1

 

 Warunek na źółto ze statusami możesz usunać, jeśli chcesz sprawdzać jakiekolwiek powtórzenia. wtedy wystarczy and status_car is not null.
W pierwszym poleceniu niechcący napisałem is null zamiast ist not null, więc zmień to w warunku where. Powyższe zapytanie napisałem już poprawnie.

komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
SELECT nr_naczepy FROM appt WHERE nr_naczepy!='' GROUP BY nr_naczepy HAVING count(DISTINCT status_car)>1

Działa dzięki wielkie :) jesteś wielki ;)

+1 głos
odpowiedź 12 czerwca 2018 przez Chess Szeryf (76,710 p.)
edycja 12 czerwca 2018 przez Chess
select * from cars where status1!=status2;

Gotowiec z tutorial'a:

http://www.mysqltutorial.org/mysql-find-duplicate-values/

select id,count(id),status1 from cars2 group by id having count(id) < 2;

https://blog.jooq.org/2017/04/20/how-to-calculate-multiple-aggregate-functions-in-a-single-query/

komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
No nie ;) bo pokazuje źle ;) powienien pokazać jedną naczepę, bo tylko jedna naczepa ma dwa statusy... a pokazuje obie naczepy...
1
komentarz 13 czerwca 2018 przez Chess Szeryf (76,710 p.)
select nr_naczepy from appt group by nr_naczepy having count(status_car) > 2;

Jeśli, to nie jest zapytanie, którego szukasz to wyjaśnij od początku z jakich danych, jakie dane mają powstać.

komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)

Z tych danych ma mi wypisać wszystkie nr_naczepy (w tym przypadku 1) , która ma więcej niż jeden status (status_car). przypisany do jednej naczepy (przy czym numery naczepy się powtarzają jak widać) Np. naczepa PZ029aa ma dwa statusy (przyjechał,w drodze) a naczepa po1e001 ma jeden status tylko (przyjechał). Powinno wypisać naczepę PZ029aa

1
komentarz 13 czerwca 2018 przez Chess Szeryf (76,710 p.)

Najpierw napisz, czy zapytanie powyżej u Ciebie działa jak powinno, bo u mnie wypisało tę naczepę co chcesz.

Wtedy chyba źle napisałem, powinno być to:

select nr_naczepy from appt group by nr_naczepy having count(status_car) > 1;

Jeden, a nie dwa. count(status_car) > 1;.

komentarz 13 czerwca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
SELECT nr_naczepy FROM appt WHERE nr_naczepy!='' GROUP BY nr_naczepy HAVING count(DISTINCT status_car)>1

Ten działą poprawnie ;) Również dzięki za pomoc ;)

Podobne pytania

0 głosów
1 odpowiedź 317 wizyt
pytanie zadane 5 grudnia 2015 w SQL, bazy danych przez Wilier Bywalec (2,570 p.)
+1 głos
1 odpowiedź 161 wizyt
pytanie zadane 11 grudnia 2021 w JavaScript przez castor_fiber Użytkownik (800 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...