![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam kod:
Zapytanie poprawnie zwraca dwa wyniki:
Natomiast gdy dodam kilka innych tabel do zapytania:
wyników jest już więcej (konkretnie 12). Czy ktoś mógłby mi powiedzieć dlaczego? Ten post edytował Kedan 4.06.2010, 00:18:31 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Bo stosujesz iloczyn kartezjański tabel, który nie powinien być używany z tej prostej przyczyny, że jak pobierasz dane z dwóch tabel po 3 rekordy to wyników masz 9, jeśli dojdzie 3-cia tabela to już 27 i tak dalej. Poczytaj o złączaniu tabel przy pomocy JOIN.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie tego się obawiałem. Problem polega na tym, że relacje pomiędzy tabelami trzymam sobie w osobnej tabeli - i szczerze mówiąc zastanawiam się czy to faktycznie był dobry pomysł. Plus jest taki, że z php mogę swobodnie dodawać i usuwać relacje z dowolną ilością tabel nie ingerując w ich strukturę. Gdybym korzystał z JOIN, to przy dodaniu relacji z nową tabelą musiałbym pewnie dodać nową kolumnę. No chyba że będę JOIN'ował trzy tabele zamiast dwóch.
Ten post edytował Kedan 4.06.2010, 23:27:15 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A to żeś sobie wykoncypował...
Mógłbyś pokazać jak to wygląda? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie bardzo, bo musiałbym sporą część cms'a przeklejać. Po prostu w tabeli-relacji trzymam sobie identyfikatory z tabeli-danych. Sprawę załagodziłem przez GROUP BY 'id' - wiem, to tylko obejście problemu a nie jego rozwiązanie.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Nom. To Ci tylko wynik poprawia, bo ilozcyn i tak jest robiony, więc wydajność tego będzie marna. Już raczej łącz przez tą trzecią tabelę.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jest ok. Dzięki za rozwianie moich wątpliwości ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:10 |