Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]Wyświetlanie rekordów z 1 tabeli z odpowiadającymi im datami w 2 tabeli
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Mam 2 przykladowe tabele:

t_ksiazka
-----------
id_ksiazka
pozostale_nie_wazne_pola

t_ta_ksiazka
---------------
id_t_ta_ksiazka
f_ksiazka
data
itp
itd

t_ksiazka.id_ksiazka zapisywane jest w polu t_ta_ksiazka.f_ksiazka. Innymi slowy rekordy z t_ksiazka zapisywane sa wiele razy w tabeli t_tak_ksiazka. Dla przykladu ksiazka z tabeli t_ksiazka o id=1 wpisana jest kilka razy w tabeli t_ta_ksiazka różniąc się datami w polu t_ta_ksiazka.data.
Czyli na chlopski rozum ksiazka np. Potop (o id_ksiazka = 1) powtorzy sie np. 13 razy w t_ta_ksiazka. W takim przypadku f_ksiazka bedzie mialo 13 razy wartosc 1 a roznić się bedą daty.

Jak skonstruowac zapytanie SQL aby wyswietlic tylko te ksiazki z tabeli t_ksiazka ktorych daty w t_ta_ksiazka sa wieksze od podanej przeze mnie wartosci. Na przyklad Potop ma daty od roku 1991 do 2014 (13 rekordow). Ale mnie interesuje aby znalazlo mi tylko ksiazki ktorych daty w t_ta_ksiazka sa wieksze od 1995, czyli Potop odpada bo 5 razy ma date mniejsza (1991, 1992, 93, 94, 95).
Nie wiem czy dobrze opisalem problem ale po calej nocy z php jestem juz na prawde zmeczony. Sorx.

Ten post edytował sadistic_son 23.12.2009, 06:49:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
yoltz
post
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.02.2008

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


  1. SELECT pola,ktore,cie,interesuja FROM t_ksiazka tk, t_ta_ksizka ttk WHERE tk.id_ksiazka=ttk.f_ksiazka AND ttk.data>'interesujaca cie data'


chyba o to chodzi (IMG:style_emoticons/default/smile.gif)
swoją drogą pojechałeś po bandzie z nazewnictwem...
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


No nie zupełnie o to mi chodziło. Może rozrysuję mój problem.
2 tabele z rekordami i relacjami jakie zachodzą:
(IMG:http://img38.imageshack.us/img38/1176/zapytaniew.jpg)

Teraz chodzi mi o skonstruowanie takiego zapytania które w wyniku wyświetli Krzyzakow i Lalke ale bez Potopu. Poniewaz jedna z dat przyporzadkowanych do Potopu jest mniejsza niz 2000 (a tak sobie założyliśmy, że szukamy lat >2000). W Wyniku ma być: Krzyżacy , Lalka. Zapytanie yoltz da w rezultacie 3 razy Potop (bez I rekordu), 3 x Krzyzacy i 3 x Lalka. GROUP BY tez nic nie pomoze bo spowoduje jedynie ze wszystko pojawi sie 1 raz.

Ten post edytował sadistic_son 23.12.2009, 23:06:08
Go to the top of the page
+Quote Post
adminik
post
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 22.01.2008
Skąd: Tarnobrzeg

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


Poczytaj o Join (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kefirek
post
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  1. SELECT * FROM t_ta_ksiazka t1 LEFT JOIN t_ksiazka t2 ON (t1.f_ksiazka=t2.id) WHERE DATA >= 2000
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Albo:
  1. SELECT * FROM t_ksiazka t1, t_ta_ksiazka t2 WHERE t1.id=t2.f_ksiazka AND t2.DATA > '2000-01-01'


To chyba to samo, co wyżej

Ten post edytował darko 24.12.2009, 13:23:55
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: 7.10.2025 - 22:17