Hej.
Przeszukałem forum, ale jakoś nie bardzo znalazłem odpowiedź na moje pytanie...
Mam taki mały problem: mam trzy tabele w bazie:
- artykuly (id_artykul, tytul, kategoria, cośtam...)
- osoby (id_osoba, nazwisko, cośtam...)
- artykuly_osoby (id_artykuly_osoby, id_artykul, id_osoba)
i teraz potrzebuję pobrać artykuły o konkretnej kategorii, które napisały jakieś osoby (w tabeli artykuly_osoby jest powiązanie), ale niektóre artykuły mogą być napisane w formie ulotki, czy zapowiedzi, gdzie nie jest podana osoba, bo tekst nie ma autora jako takiego. Udało mi się napisać zapytanie które wiąże artykuły z osobami i wyświetla te do których jest przypisany autor, ale które nie posiadają autora nie są wyciągane z bazy, a na stronie muszą znaleźć się wszystkie artykuły z danej kategorii (te z autorem jak i bez).
Z góry dziękuję za wszelkie przejawy pomocy
Pozdrawiam!
Sprawdź to
SELECT tytul FROM artykuly, osoby, artykuly_osoby WHERE artykuly_osoby.id_artykul=artykuly.id_artykul AND (artykuly_osoby.id_osoba=osoby.id_osoba OR artykuly_osoby.id_osoba=NULL)
Przepraszam, że dopiero odpisuję, ale nie miałem czasu się ponownie tym zająć.
Wprowadziłem te zmiany i niestety nie przynosi to zamierzonego efektu Nic to nie psuje, ale i nie pomaga... Ma ktoś jeszcze jakieś propozycje?
Ja proponowałbym ci przemeblowanie w bazie. Usuń tabelę:
- artykuly_osoby (id_artykuly_osoby, id_artykul, id_osoba)
do tabeli artykuły dodaj: autor(ID autora artykułu)
Teraz masz dużo prostsze zapytanie, a jak potrzebujesz nick usera to prosty JOIN
SELECT a.id_artykul, a.autor, a.tytul, a.kategoria, o.id_osoba, o.nazwisko FROM artykuly a LEFT JOIN osoby o ON a.autor=o.id_osoba WHERE a.kategoria IN (1,2,4,6,7,12,543) OR a.autor IN (1,2,4,6)
Tylko jest jeden problem to jest już baza istniejącego serwisu i nie bardzo mogę w bazie ingerować - w sensie struktury...
SELECT t.id_artykul, t.id_osoba, a.tytul, a.kategoria, o.id_osoba, o.nazwisko FROM artykuly_osoby t LEFT JOIN osoby o ON t.id_osoba=o.id_osoba LEFT JOIN artykuly a ON a.id_artykul=t.id_artykul WHERE a.kategoria IN (1,2,4,6,7,12,543) OR t.id_osoba IN (1,2,4,6)
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)