Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] zapytanie pomocy
Forum PHP.pl > Forum > Bazy danych > MySQL
gino
witam

siedzę i wymyślam ale daleko od ideału. Mam 2 tabele w relacji 1 do wielu:
tabela1 id, nazwa
tabela2 id, data

chciałbym w jednym zapytaniu otrzymać pola z tabeli1 i z tabeli2 dla każdego rekordu z pierwszej jedno pole z najświeższą datą, help me !

gino
pyro
Cytat(gino @ 29.03.2008, 21:58:21 ) *
witam

siedzę i wymyślam ale daleko od ideału. Mam 2 tabele w relacji 1 do wielu:
tabela1 id, nazwa
tabela2 id, data

chciałbym w jednym zapytaniu otrzymać pola z tabeli1 i z tabeli2 dla każdego rekordu z pierwszej jedno pole z najświeższą datą, help me !

gino


troche zamieszania w twoim poscie, nie wiem czy dobrze zrozumialem, czy to o to chodzi?

SELECT tabela1.nazwa, tabela2.data from tabela1, tabela2 WHERE tabela1.id = tabela2.id ORDER BY data asc limit 1;
gino
otrzymam wtedy jeden rekord. Już jaśniej tłumaczę: w tabela1 jest np. 10 rekordów. Dla każdego z nich w tabela2 może być n-rekordów. Musze otrzymać z tabela1 wszystkie rekody i pola i dodatkowo dla każdego z tych rekordów z tabela1 jeszcze z tabela2 jeden rekord z polem data z najświeższą datą.

gino
osiris
Witam,

zakladajac, ze kolumna do zlaczenia tabel t1 i t2 ma nazwa join_col w obu tabelach, to zapytanie bedzie wygladac tak:
  1. SELECT * FROM t1 INNER JOIN (SELECT join_col , MAX(DATA) AS DATA FROM t2 GROUP BY join_col) AS j USING (join_col) INNER JOIN t2 USING (join_col, DATA);


ale raczej nie jest to zbyt efektywne i lepiej do tabeli t1 dodac pole, ktoro bedzie przechowywac id odpowiadajacego rekordu z tabeli t2 o najswiezszej dacie.

Pozdrawiam
kaminskp
To o co "gino" pyta to jest relacja pomiędzy tabelami.
Mam ten sam problem jak je prawidłowo obsłużyć.
Począwszy od SELECY, INSER i inne.
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.