Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Trzy zlorzone zapytania..., ...jak to ugryzc??
alex19
post 18.08.2006, 00:05:50
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

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


Potrzebuje 3 dosc skomplikowanych zapytan, ale nie mam zielonego pojecia jak sie za nie zabrac sad.gif

Pierwsze chyba najprostsze, ale nie wiem za bardzo jak to rozwiazac.
Porzebuje wszystkich rekordow w ktorych data w tabeli kontakt jest na najblizsze 7 dni. Czyli rekordy gdzie data jest dzisiejsza, jutrzejsza .... az do dzis+7. Date mam typu DATETIME.
  1. SELECT * FROM klient LEFT JOIN pracownik ON klient.opiekun=pracownik.dzial
  2. LEFT JOIN dzialy ON pracownik.dzial=dzialy.poziom_dost
  3. LEFT JOIN kontakt ON klient.id=kontakt.id_firmy
  4. WHERE sprawdzona='1' AND dzialy.dzial='3' AND questionmark.gif?


Drugie jest juz trudniejsze winksmiley.jpg
Potzrzebne mi sa rekrody ktorych id nie ma w tabeli zablokowane, a zapytanie jest takie samo jak wyzej.
  1. SELECT * FROM klient LEFT JOIN pracownik ON klient.opiekun=pracownik.dzial
  2. LEFT JOIN dzialy ON pracownik.dzial=dzialy.poziom_dost
  3. WHERE sprawdzona='1' AND dzialy.dzial='3' AND questionmark.gif?


Trzecie najtrudniejsze i nie wiem czy wogole wykonalne.
Zapytanie jest potrzebne takie jak numer dwa, ale chcialbym pogrupowac rekordy wedlug tego czy ich id znajduje sie w tabeli kontakt w jakikolwiek sposob oznaczyc te ktorych nie ma w kontakcie.



---
Bykom STOPexclamation.gif!
Proszę poprawić temat wątku. Podpowiedź: PWN :: złożony
~mike_mech
Go to the top of the page
+Quote Post
slowik
post 18.08.2006, 07:54:11
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.03.2006

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


1. Najpierw obliczasz przedział czasowy czyli pobierasz dzisiejszy dzien i ten za 7 dni.. do zapytania wstawiasz
  1. AND (kontakt.date > dzien_dzisiejszy AND kontakt.date < dzien_koncowy)


2.
  1. AND klient.id NOT IN( SELECT id FROM zablokowane )


3. Nie za bardzo zrozumiałem.. smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
alex19
post 18.08.2006, 10:19:06
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

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


Cytat(slowik @ 18.08.2006, 08:54 ) *
1. Najpierw obliczasz przedział czasowy czyli pobierasz dzisiejszy dzien i ten za 7 dni.. do zapytania wstawiasz
  1. AND (kontakt.date > dzien_dzisiejszy AND kontakt.date < dzien_koncowy)


2.
  1. AND klient.id NOT IN( SELECT id FROM zablokowane )

Super. Dzieki!

Cytat
3. Nie za bardzo zrozumiałem.. smile.gif


Potzebuje tego zapytania
  1. SELECT * FROM klient LEFT JOIN pracownik ON klient.opiekun=pracownik.dzial
  2. LEFT JOIN dzialy ON pracownik.dzial=dzialy.poziom_dost
  3. LEFT JOIN kontakt ON klient.id=kontakt.id_firmy
  4. WHERE sprawdzona='1' AND dzialy.dzial='3' AND AND klient.id NOT IN( SELECT id FROM zablokowane )

ale chcialbym pogrupowac wyniki wedlug tego czy id klienta znajduje sie w tabeli kontakt czy tez nie. Te rekordy ktore sie nie znajduja chcialbym jakos inaczej zanzaczyc przy wypisywaniu.
Czy teraz jasniej?
Go to the top of the page
+Quote Post
kossa
post 18.08.2006, 13:58:12
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


zamiast tyle razy używać and użyj operatora between, np:

  1. SELECT * FROM nba WHERE (dzien_dzisiejszy BETWEEN $dzien_dzisiejszy AND $dzien_koncowy);


Łukasz


--------------------
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: 20.07.2025 - 09:22