Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Problem wałkowany - ale proszę o pomoc

Sprawa banalna wręcz, jeżeli mamy łączenie 2 tabel, teraz chciałbym się zapytać jak drodzy koledzy widzicie taką opcję:

Mamy 3 tabele np.
zdjecia : id | aid | link | ident
wideo : id | aid | link | ident
aplikacje: id | nazwa | opis | data_utworzenia

Chcę pobrać wszystkie wpisy, więc robię tak:
SELECT * FROM aplikacje
jednak teraz chcę to zrobić w sposób taki, że pobieram tylko te, które mają chociaż jeden wpis w wideo i zdjęcia (aid = id)

SELECT * FROM aplikacje as ap, zdjecia as ph, wideo as wi WHERE .......
tutaj wielki znak zapytania :D

gdy kombinuje sposobem left join, czy right join, to dublują mi się wpisy z aplikacje, gdyż pobiera również zdjecia i wideo traktując nie jako jeden a jako ilość wpisów wideo i zdjecia.

Problem wałkowany, bo sam go już kilkukrotnie przerabiałem, ale pech chciał, że mam mało czasu, i brak dostępu do kompa, gdzie mam archiwum :(
Adam Bąk

Adam Bąk Programista

Temat: Problem wałkowany - ale proszę o pomoc

select *
from aplikacje,wideo,zdjecie
where aplikacja.id==wideo.aid and aplikacja.id==zdjecia.aid;

Czy o to chodzi Ci ??
Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Problem wałkowany - ale proszę o pomoc

Nie do końca, może prościej sprawę wyjaśnię:

To ma być wyszukiwarka i wszystko inne jest ok, ale potrzebuję zrobić możliwość wyszukiwania:
* tylko ze zdjęciem
* tylko z wideo
* ze zdjęciem i wideo
* bez zdjęcia i wideo

Czyli w zasadzie to ja nie potrzebuję zwracania wartości wideo i zdjecia, interesuje mnie tylko by pobrało np. wszystkie wpisy z aplikacji, które mają chociaż jednen wpis w photos lub/oraz/i video.

EDYCJA:
Dla wideo i zdjecia znalazlem rozwiazanie dzieki GROUP BY:

SELECT ap.*, zd.aid FROM aplikacje as ap, zdjecia as zd WHERE ap.id=zj.aid GROUP BY (ap.id)

jak teraz połączyć, aby sprawdzało zarówno zdjecia jak i wideo ?Grzegorz M. edytował(a) ten post dnia 06.03.11 o godzinie 14:12

konto usunięte

Temat: Problem wałkowany - ale proszę o pomoc

select
*
from
aplikacja a
LEFT JOIN wideo w ON a.wideo_id = w.id
LEFT JOIN zdjecie z ON a.zdjecie_id = z.id
WHERE
-- warunek istenienia zdjecia
NOT ISNULL( zdjecie_id )
-- warunek istenienia wideo
NOT ISNULL( wideo_id );

?
Jeżeli fot,zdjec wiecej to flaga na oznaczenie głównego, ew group by. Mam nadzieję, że relację z FK nie masz na NOT NULL.

Adam: Nie wypisuj takich rzeczy bo jeszcze ktoś uwierzy ;]
Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Problem wałkowany - ale proszę o pomoc

Rozwałkowałem chyba to już dobrze, puki co wyszukuje ok:

SELECT ap.*, zd.aid, vi.aid FROM aplikacje as ap, zdjecia as zd, wideo as vi WHERE (ap.id=zj.aid AND ap.id=vi.aid) GROUP BY (ap.id)

Ps. Adamie niechcący kliknąłem wartościowa wypowiedź :P hehe więc niech tak zostanie :-)Grzegorz M. edytował(a) ten post dnia 06.03.11 o godzinie 14:22
Adam Bąk

Adam Bąk Programista

Temat: Problem wałkowany - ale proszę o pomoc

Rafał Wardas:
Adam: Nie wypisuj takich rzeczy bo jeszcze ktoś uwierzy ;]

Spoko, nie zrozumiałem pytania do końca, sorki

Następna dyskusja:

problem z polskimi znakami




Wyślij zaproszenie do