Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie z JOIN + 2 warunki
duch4ever
post 14.03.2019, 19:28:52
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

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


Witam, przepraszam że taki dziwny tytuł bo sam nie wiem jak to nazwać i nie mogę też znaleźć pomocy na stacku.

Załóżmy że mamy zamówienia w bazie i statusy do zamówień i teraz chcę pobrać zamówienie które mają status AAA oraz BBB ale nie mają w historii statusu XXX.

Przykład:
  1. SELECT * FROM zamowienia z
  2. JOIN statusy_historia s ON s.id_zamowienia = z.id_zamowienia AND s.nazwa = "AAA" OR s.nazwa = "BBB" # Ale nie chce zamówień ze statusem XXX


Jedno zamówienie ma wiele statusów (relacje jeden do wielu), ja chcę te zamówienia które mają jeden z dwóch i jednocześnie nie mają trzeciego.
Rozwiązałem to warunkiem EXISTS ale baza jest duża i działa to wolno.

Ten post edytował duch4ever 14.03.2019, 19:31:34
Go to the top of the page
+Quote Post
mmmmmmm
post 18.03.2019, 12:00:35
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT z.id_zamowienia FROM zamowienia z JOIN statusy_historia s ON s.id_zamowienia=z.id_zamowienia AND s.nazwa IN ('AAA', 'BBB', 'XXX')
  2. GROUP BY 1
  3. HAVING count(DISTINCT s.nazwa)>Count(DISTINCT CASE WHEN s.nazwa='xxx' THEN s.nazwa END)


Ten post edytował mmmmmmm 18.03.2019, 12:01:29
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 10:05