Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Wyświetlanie rekordów z 1 tabeli z odpowiadającymi im datami w 2 tabeli
Forum PHP.pl > Forum > Przedszkole
sadistic_son
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.
yoltz
  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 smile.gif
swoją drogą pojechałeś po bandzie z nazewnictwem...
sadistic_son
No nie zupełnie o to mi chodziło. Może rozrysuję mój problem.
2 tabele z rekordami i relacjami jakie zachodzą:


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.
adminik
Poczytaj o Join smile.gif
kefirek
  1. SELECT * FROM t_ta_ksiazka t1 LEFT JOIN t_ksiazka t2 ON (t1.f_ksiazka=t2.id) WHERE DATA >= 2000
darko
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.