Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie danych z 3 tabel
remik09
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


Po długim rozbracie z pisaniem stron, na nowo zacząłem i natrafiłem na problem z którym nie umiem sobie poradzić

Mam 3 tabele tracki, sety, cd (ich budowa nie jest tu zbytnio potrzebna), na stronę główną chciałbym dać np 10 najnowszych aktualności z tych 3 tabel sortowane wg daty. Jakim poleceniem mogę pobrać naraz z wsyzstkich 3 tabel sortując po dacie

W ostateczności mogę dodać kolejną tabelę i tam zapisywać kolejność dodawania elementów do tych tabel ale chciałbym tego uniknąć

Ten post edytował remik09 1.11.2009, 10:35:35


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
Zosiek
post
Post #2





Grupa: Zarejestrowani
Postów: 140
Pomógł: 22
Dołączył: 1.05.2009
Skąd: Będzin

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


Pobierasz dane z tabeli i sortujesz datami a potem wyświetlasz. (order by - sortowanie)

Ten post edytował Zosiek 1.11.2009, 11:47:46


--------------------
Pamiętaj ja staram się pomóc tobie, a ty może kiedyś pomożesz mnie. :D
Pomogłem Ci?? Jeśli tak to jestem z tego dumny. Jeśli nie to postaram się bardziej - nikt nie jest doskonały :P
Kliknij przycisk Pomógł pod postem, który Ci pomógł.
Go to the top of the page
+Quote Post
remik09
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


mógłbyś napisać kod tego polecenia bo coś czuje, że to taka strasznie lakoniczna odpowiedź, takie przekształcenie mojego pytania tylko


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
InosU31
post
Post #4





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


moze tak :

[SQL] pobierz, plaintext
  1. SELECT * FROM tracki, sety, cd ORDER BY kolumna_z_data DESC LIMIT 10
[SQL] pobierz, plaintext

to zapytanie powinno Ci wybrac wszystko z tych trzech tabel, posegregowac po dacie ostatnio dodanych rekordow i pokazac tylko 10 wynikow

Pozdrawiam

Ten post edytował InosU31 1.11.2009, 19:33:21
Go to the top of the page
+Quote Post
remik09
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


w phpmyadminie otrzymałem coś takeigo

Kod
zapytanie SQL:  

SELECT *
FROM `tracki` , `sets` , `cds`
ORDER BY `data` DESC
LIMIT 10

MySQL zwrócił komunikat:  

#1052 - Kolumna: 'data' w  order clause jest dwuznaczna


dodam, że w każdej tabeli istnieje pole `data` i jest tego samego typu

Ten post edytował remik09 1.11.2009, 21:33:32


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




używaj aliasów. tzn: tracki.data as tdata, sets.data as sdata itd.


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





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


nie bardzo rozumiem w jakim sensie ma to pomóc, jeśli dobrze zrozumiałem działanie aliasów

a w ostateczności da się to pobrać 3 zapytaniami a potem załadować do 3 tablic array, polaczyc je i tam posegregowac je wg daty ?


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
salza
post
Post #8





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 1.11.2009

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


Cytat(piotrooo89 @ 1.11.2009, 21:41:35 ) *
używaj aliasów. tzn: tracki.data as tdata, sets.data as sdata itd.


a dokładnie:

SELECT * FROM tracki as t, sety as s, cd as c ORDER BY c.data DESC LIMIT 10

chyba, że data z tracka jest ważniejsza niż data z cd

ps. jak widać zawartość tabel jest istotna, skąd piszący wcześniej miał wiedzieć, ze w każdej tabeli masz pole "data"


--------------------
Moje strony w PHP:
Darmowy katalog stron.
Testy DNA na ojcostwo,środki na potencję.
Dowcipy,SMSy, wierszyki.
Go to the top of the page
+Quote Post
remik09
post
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


przecież napisałem o tym :|

aliasy średnio pomogły ale pomogło polecenie UNION

Kod
SELECT data, wykonawca FROM `cds` UNION ALL SELECT data, wykonawca FROM `tracki`


jednak wystąpił pewien problem:

Kod
SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `cds` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `tracki` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `sets` LIMIT 10


pobiera dobrze z 2 tabel ale trzecią mi już pomija


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




chłopie jak sie utrudniasz... robisz jakieś zapytanie nie wiem skąd a możesz mieć bardziej optymalne używając aliasów...


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(remik09 @ 2.11.2009, 15:29:17 ) *
Kod
SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `cds` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `tracki` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `sets` LIMIT 10


pobiera dobrze z 2 tabel ale trzecią mi już pomija

A tak?
  1. SELECT * FROM (SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `cds` UNION ALL SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `tracki` UNION ALL SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `sets`) t ORDER BY `data` DESC LIMIT 10;
Go to the top of the page
+Quote Post
remik09
post
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


nie wiem czy do końca mój problem jest rozumiany, ja chcę uzyskać wszystkie rekordy z tych tabel jednym zapytaniem, żeby mozna było je posortować wg daty. Używając aliasów 2 tabele łączą mi się w jedną i każdy rekord ma np 2 razy id, 2 razy date itp., anie o to mi chodzi

id|data|wykonawca|gatunek
--|-----|-------------|---------
1 |2106|abcd |HC
2 |4627|dadzc |HC

id|data|wykonawca|gatunek
--|-----|-------------|---------
1 |9136|czczc |HC
2 |4657|dadacz |HC

takie coś mi wychodzi

id|data|wykonawca|gatunek|id|data|wykonawca|gatunek
--|-----|-------------|-------------------------------------------
1 |2106|abcd |HC |1|9136|czczc |HC
2 |4627|dadzc |HC |2|4657|dadacz |HC

a ja chce otrzymać

id|data|wykonawca|gatunek
--|-----|-------------|---------
1 |9136|czczc |HC
2 |4657|dadacz |HC
1|2106 |abcd |HC
2|4627 |daadzc |HC




phpion, niestety wywala błąd od razu

Ten post edytował remik09 2.11.2009, 15:09:26


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dlatego tak się dzieje, bo ci twardziele każą Ci robić iloczyn kartezjański tabel, w wyniku którego dostaniesz zbiór każdy-z-każdym. Bazuj na przykładzie podanym przeze mnie - powinno działać tak, jak chcesz.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




pokaż struktury tabel... i powiedz jak powinny wyglądać dane wynikowe. bo tak to błądzimy po omacku.


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(piotrooo89 @ 2.11.2009, 16:05:55 ) *
pokaż struktury tabel... i powiedz jak powinny wyglądać dane wynikowe. bo tak to błądzimy po omacku.

Nie błądzimy po omacku tylko niektórzy nie wiedzą o czym piszą. Kolega jasno napisał co chce osiągnąć.
Go to the top of the page
+Quote Post
remik09
post
Post #16





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


Cytat(phpion @ 2.11.2009, 14:50:52 ) *
  1. SELECT * FROM (SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `cds` UNION ALL SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `tracki` UNION ALL SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM `sets`) t ORDER BY `data` DESC LIMIT 10;


jak już napisałem bo chyba nei zauważyłeś niestety wywala błąd

  1. #1064 - Something is wrong in your syntax obok 'SELECT DATA, nazwa, wykonawca, typ, DATA, gatunek, link, id FROM' w linii 1



--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
piotrooo89
post
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. SELECT `id`, `data`, `wykonawca`, `gatunek` FROM tab1
  2. UNION
  3. SELECT `id`, `data`, `wykonawca`, `gatunek` FROM tab2


może tak?

Ten post edytował piotrooo89 2.11.2009, 15:47:37


--------------------
Go to the top of the page
+Quote Post
remik09
post
Post #18





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


sory jednak to co wcześniej pisałem było dobre

Kod
SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `cds` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `sets` UNION ALL SELECT data, nazwa, wykonawca, typ, data, gatunek, link, id FROM `tracki` ORDER BY data LIMIT 10


jednak działa dobrze, jest pobieranie z 3 tabel

@piotrooo89 - więc jeśli wyszło mi to co chciałem to chciałbym abyś mi pokazał kod z aliasami, który zrobi dokładnie to samo, bo się ich tak czepiłeś a ja w ogóle nie wiem jak je można tu wykorzystać. Dla mnei to jedyne polecenie, które może zrobić to co ja chciałem

Ten post edytował remik09 2.11.2009, 15:50:32


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
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: 19.08.2025 - 20:22