Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] zapytanie pomocy
gino
post 29.03.2008, 21:58:21
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
pyro
post 29.03.2008, 22:04:59
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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;

Ten post edytował pyro 29.03.2008, 22:06:27


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
gino
post 29.03.2008, 22:14:32
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


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
Go to the top of the page
+Quote Post
osiris
post 3.04.2008, 11:18:13
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


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

Ten post edytował osiris 3.04.2008, 11:30:45
Go to the top of the page
+Quote Post
kaminskp
post 3.04.2008, 19:06:19
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 18.03.2008
Skąd: Olsztyn

Ostrzeżenie: (20%)
X----


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.
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: 24.07.2025 - 21:47