Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie tabel z sortowaniem
kukimax
post
Post #1





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

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


Witam mam taki problem, mam 2 tabele:

Tabela1
Id | nazwa
----------------------------------------
1 | jakas nazwa
2 | produkt


Tabela2:
Id_tab1 | kwota | data
----------------------------------------------------------------------------
1 | 100.00 | 0000-00-00 00:00:00
1 | 199.00 | 2011-01-17 11:53:45
2 | 123.53 | 2011-01-18 20:12:31
1 | 11.52 | 2011-01-21 10:42:29
2 | 246.00 | 2011-01-11 14:35:14

I chce żeby w 1 zapytaniu wyświetlił nazwę produktu z tabeli 1 oraz pobrał jaj nowszą kwotę z tabeli 2, tak żeby to wyglądało tak:

1 | jakas nazwa | 11.52
2 | produkt | 246.00

Z góry dziękuję za odpowiedź i pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
kalmaceta
post
Post #2





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


INNER JOIN link


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
kukimax
post
Post #3





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

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


Tyle to i ja wiem:

  1. SELECT tabela1.id, tabela1.nazwa, tabela2.kwota FROM `tabela1` INNER JOIN `tabela2` ON tabela1.id = tabela2.id_tab1 GROUP BY tabela1.id


To mi wyświetli pierwszą kwotę dodaną do bazy, a nie najnowszą
Go to the top of the page
+Quote Post
kalmaceta
post
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


nie napisałeś tego w pierwszym poście, problem w tym że nie ma porządku w drugiej tabeli dodaj pole id autoincrement i Zrób join nie z tabela2 tylko (SELECT * ROM tabela2 ORDE#R BY id DESC)

Ten post edytował kalmaceta 21.01.2011, 18:40:37


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
kukimax
post
Post #5





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

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


  1. SELECT tabela1.id, tabela1.nazwa, (SELECT tabela2.kwota FROM `tabela2`WHERE tabela1.id = tabela2.id_tab1 ORDER BY tabela2.DATA DESC LIMIT 1) AS kwota FROM `tabela1` GROUP BY tabela1.id


Coś takiego zadziała ale jak będe chciał jeszcze wyświetlić kwoty np mniejsze od 100 czyli:

  1. SELECT tabela1.id, tabela1.nazwa, (SELECT tabela2.kwota FROM `tabela2`WHERE tabela1.id = tabela2.id_tab1 ORDER BY tabela2.DATA DESC LIMIT 1) AS kwota FROM `tabela1` WHERE kwota<100 GROUP BY tabela1.id


To będzie problem
Go to the top of the page
+Quote Post
kalmaceta
post
Post #6





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


inner join miało być

  1. SELECT tab1.cos, tab2.cos FROM tab1 INNER JOIN (SELECT * FROM tabela2 ORDER ....) tab2 ON ....


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A o HAVING słyszał? smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Aktualny czas: 20.08.2025 - 01:44