Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podzapytania
chyzio
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 12.03.2006

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


Mam takie takie dwa zapytania

Zapytanie 1:

  1. SELECT id_zasobu FROM rezerwacje_zasoby WHERE id_zasobu=18


Zapytanie 2

  1. SELECT id_zasobu FROM rezerwacje_zasoby WHERE '2009-02-10 11:00:00' BETWEEN rezerwacja_od AND rezerwacja_do OR '2009-02-10 15:00:00' BETWEEN rezerwacja_od AND rezerwacja_do
  2. GROUP BY id_zasobu;


Jak zrobić aby zapytanie 2 stało się warunkiem zapytania 1 ? chcę pobrać wiersze które mają id_zasobu = 18 (zapytanie 1) i jednocześnie zawierają się w dacie (zapytanie 2). Nie mam pomysłu jak je połączyć :/

Ten post edytował chyzio 10.02.2009, 12:01:02
Go to the top of the page
+Quote Post
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Rzeczywiscie pierwsze zapytanie ma wycaigac tylko i wylacznie 18 albo NULL? Bo tak jest skonstruowane.
Jezeli chodzi o polaczenie Twoich zapytan, choc wydaje mi sie to dziwna konstrukcja, to operujac na tej samej tabeli mozesz po prostu
  1. SELECT id_zasobu FROM rezerwacje_zasoby WHERE '2009-02-10 11:00:00' BETWEEN rezerwacja_od AND rezerwacja_do OR '2009-02-10 15:00:00' BETWEEN rezerwacja_od AND rezerwacja_do AND id_zasobu=18
  2. GROUP BY id_zasobu;

tylko naprawde podejrzane wydaja mi sie Twoje przyklady...
Go to the top of the page
+Quote Post
chyzio
post
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 12.03.2006

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


Id_zasobu zawsze jest znane drugie zapytanie ma sprawdzić czy zasób o określonym id_zasobu w podanych godzinach nie jest w użyciu, ddiceman konstrukcja którą zaproponowałeś ze względu na użyty warunek logiczny OR nie wskazuje tylko i wyłącznie na zasob o id_zasobu=18

Powiem tak warunek jest prawdziwy gdy choć jeden z obu warunków jest prawdziwy czyli

  1. '2009-02-10 11:00:00' BETWEEN rezerwacja_od AND rezerwacja_do

lub
  1. '2009-02-10 19:00:00' BETWEEN rezerwacja_od AND rezerwacja_do


i jednocześnie id_zasobu musi wynosić 18

Ten post edytował chyzio 10.02.2009, 12:56:44
Go to the top of the page
+Quote Post
ddiceman
post
Post #4





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


no to pogrupuj
  1. SELECT id_zasobu FROM rezerwacje_zasoby WHERE ('2009-02-10 11:00:00' BETWEEN rezerwacja_od AND rezerwacja_do OR '2009-02-10 15:00:00' BETWEEN rezerwacja_od AND rezerwacja_do) AND id_zasobu=18
  2. GROUP BY id_zasobu;
Go to the top of the page
+Quote Post
chyzio
post
Post #5





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 12.03.2006

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


Jaki głupek ze mnie no tak wystarczyły nawiasy... ddiceman dziękuję bardzo o to mi chodziło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował chyzio 10.02.2009, 13:08:14
Go to the top of the page
+Quote Post

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: 14.09.2025 - 21:52