![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam takie tabele:
katalog_firm (id, id_podkategoria) podkategorie(id, podkategoria) Oto moje zapytanie:
Co trzeba dodac do klauzuli WHERE aby pokazywaly sie tylko podkategorie ktore zawieraja chociaz jeden rekord w tabeli katalog_firm ? albo jak przekształcić te zapytanie ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
chyba jakoś tak Ten post edytował zzeus 2.09.2009, 10:48:18 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
chyba jakoś tak Coś nie bardzo to działczy - a co to robi ? Wyświetlam sobie rekordy:
i nadal pokazują mi się również te bez wpisów czy ktoś jest mi w stanie pomóc albo wytłumaczyc ? Ten post edytował piotr485 2.09.2009, 10:58:57 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie działa - a jakieś błędy się pokazały ?
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie działa - a jakieś błędy się pokazały ? Dodając GROUP BY wyskakuje bład Dodajac samo RIGHT JOIN katalog_firm USING(id) nic sie niezmienia (ani bledow, zadnej reakcji)
zapytanie te zamieniam na tablice i pozniej sobie wyswietlam tak dla jasnosci Prosze o pomoc! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Po pierwsze to napisałeś nam tabele bazy z błędami.
To Twoja wersja: katalog_firm (id, id_podkategoria) podkategorie(id, podkategoria) Tylko czemu w zapytaniu masz nagle w tabeli podkategorie kolumnę: id_kategoria ![]()
W takim wypadku choćbyś nie wiem co robił nic Ci nie wyświetli, bo taka kolumna nawet nie istnieje i będzie sypać błędami baza. Jak mniemam masz jeszcze jakąś inną tabelę lub ta ma inne, dodatkowe pole id_kategoria. No chyba, że to babol i ma być:
Nielogiczne w tym zapisie jest jedno: jeśli już odnosisz się do kategorii konkretnej przez jej id to tylko wyciągasz rekordy z tabeli firm, które ją mają ustawioną. Co innego jeśli chcesz wyświetlić wszystkie kategorie z konkretną liczbą rekordów w bazie firm dla tej podkategorii. Tylko od kiedy nazwa podkategorii jest równoznaczna z nazwą firmy co sugerujesz aliasem: Kod podkategorie.podkategoria AS nazwa_firmy Czy Ty właściwie wiesz co nazywasz jak, czy może po prostu nazywasz sobie kolumny i tabele pierwszymi lepszymi słowami z encyklopedii?Dla mnie bowiem każdy wpis z katalogu_firm ma zgodnie z logiką przynajmniej 3 pola: id, nazwę_firmy, id_podkategorii i to po ostatnim łączysz obie. Aby więc wyświetlić wszystkie kategorie nie odwołujesz się żadnym ID bo tak wyciągasz po prostu wszystkie firmy należące do danej podkategorii z bazy i jest to zapytanie proste:
A to co chcesz zrobić, czyli poznać wszystkie kategorie, które mają chociaż jedną firmę przypisaną do siebie jest uzyskiwane poprzez klauzulę HAVING
Oczywiście możesz także chcieć zwrócić nazwy firm będących przypisanych do jakiejkolwiek kategorii (a co... kto powiedział, że firma musi być zaszufladkowana do jakiejś?) czy jakoś jeszcze inaczej. Na chwilę obecną moim zdaniem Twoja struktura bazy podana nam nie odzwierciedla bowiem rzeczywistego przyporządkowania danych. Co zresztą wytknąłem Ci poprzez nielogiczności zapytań i opisu. Najlepiej podaj choć kilka przykladowych rekordów z obu tabel. Na razie bowiem logiczna struktura "na chłopski rozum" i opisy oraz zapytania wskazują, że albo ja jestem tępy albo nazewnictwo i zawartość tabel nie sa logiczne. -------------------- 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
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 07:12 |