![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
mam kłopot z relacją. Mysql dziwnie sie zachowuje mimo tego, że oczekuje czego innego.
mam takie zapytanie:
pobiera liste kategori i liczy ile w danej jest rekordów i sumuje kolumne count. Na chwile obecna działa tylko wtedy gdy jest jakis element w danej kategori ale jak nie ma zamiast pokaza 0 to go nie wyswetla mimo tego ze mam LEFT. RIGHT i INNER tak samo Pod zapytania niewchodzą w gre. Kilka z was moze zdziwic ze 2 razy podaje jezyk dla roznych tabel ale inaczej nie działa :/ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jak rozumiem tabele wyglądają następująco :
Tabela ‘cat’ : + id + title + userid + sort + lang + parent Tabela ‘documents’ + id + cat + count +lang , gdzie ‘cat.id‘ jest kluczem głównym, a ‘documents.cat’ jest kluczem obcym tabeli ‘cat’. Możesz na początek spróbować zapytania bez tych warunków IFNULL i zobaczyć co zwraca MySQL.
Zapytanie powinno ci zwrócić listę kategorii nadrzędnych (‘parent’ = 0), gdzie w kolumnach sum_documents i count_documents będą odpowiednie wartości w przypadku gdy istnieją jakieś dokumenty w odpowiedniej kategorii lub NULLe, gdy takich nie będzie. Teraz możesz dołożyć warunek IFNULL, żeby sprawdzić czy poprawnie NULLe będą zamieniane na 0.
Jeżeli to zadziała to możesz dodać resztę warunków, które potrzebujesz. Niestety nie mam pod ręką MySQL, więc nie mogę sprawdzić osobiście, ale na moje oko powinno działać. PS. podawaj następnym razem schemat tabel - oszczędzi trochę czasu . |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 14:33 |