ďťż
 
Zapytanie na 3 tabele, JOIN itp. ďťż
 
Zapytanie na 3 tabele, JOIN itp.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Zapytanie na 3 tabele, JOIN itp.



Egon - 26-02-2007 00:05
Zapytanie na 3 tabele, JOIN itp.
  Witam,

Mam problem z poprawnym skonstruowaniem pytania wyciągającym
odpowiednie informacje z 3 różnych tabel (MySQL):

Tabela produkt, potrzebne dane (kolumny):
id, id_producenta, id_kategorii, nazwa

Tabela producent:
id, nazwa

Tabela obrazki:
id_produktu, domyslny, plik

Na wejściu znam id_kategorii, potrzebuję wyciągnąć z bazy wszystkie
produkty będące w tej kategorii, poznać id oraz nazwę producenta,
id oraz nazwę pliku obrazka pod warunkiem że jest to plik domyślny
i o ile oczywiście określone dane istnieją :/

próbowałem coś na kształt:

SELECT p.*, o.plik, pr.nazwa FROM produkty p
LEFT JOIN produkty p2 ON (p2.id_kat = '$id_kategorii'
AND p2.widoczny = 'tak')
LEFT JOIN obrazki o ON (o.id_produktu = p.id AND o.domyslny = 'tak')
LEFT JOIN producenci pr ON (pr.id = p.id_producenta);

ale wypluwa mi wyniki podwójnie. Możliwe do zaistnienia sytuacje to:
- brak pliku obrazka dla danego produktu / brak domyślnego
- brak określonego producenta dla produktu
- brak określonej kategorii dla produktu (produkt odpada)

lub mieszanka powyższych.

Ktoś pomoże?

--
_______
| ___|.-----.-----.-----.
| ___|| _ | _ | |
|_______||___ |_____|__|__|
|_____|





Grzegorz Danowski - 26-02-2007 00:05

  "Egon" <nie.chce@spamu.com> wrote in message
news:xn0f2vv5y9qxu5002Egon@Demon.pl...
> Na wejściu znam id_kategorii, potrzebuję wyciągnąć z bazy wszystkie
> produkty będące w tej kategorii, poznać id oraz nazwę producenta,
> id oraz nazwę pliku obrazka pod warunkiem że jest to plik domyślny
> i o ile oczywiście określone dane istnieją :/
>
> próbowałem coś na kształt:
>
> SELECT p.*, o.plik, pr.nazwa FROM produkty p
> LEFT JOIN produkty p2 ON (p2.id_kat = '$id_kategorii'
> AND p2.widoczny = 'tak')

Po co drugi raz wyciągasz tą samą tabelę produkty i jeśli już, to dlaczego
nie wiążesz jej w sensowny sposób z pierwszą?
Może chodzi Ci o coś prostszego:

SELECT p.*, o.plik, pr.nazwa FROM produkty p
LEFT JOIN obrazki o ON (o.id_produktu = p.id AND o.domyslny = 'tak')
LEFT JOIN producenci pr ON (pr.id = p.id_producenta);
WHERE p.id_kat = '$id_kategorii'
AND p.widoczny = 'tak'

???\
Pozdrawiam
Grzegorz




Egon - 26-02-2007 00:05

  Access violation in module <news:ersk57$e0s$1@inews.gazeta.pl> at
address Grzegorz Danowski. See explanation below:

> Po co drugi raz wyciągasz tą samą tabelę produkty i jeśli już, to
> dlaczego nie wiążesz jej w sensowny sposób z pierwszą? Może chodzi
> Ci o coś prostszego:
>
> SELECT p.*, o.plik, pr.nazwa FROM produkty p
> LEFT JOIN obrazki o ON (o.id_produktu = p.id AND o.domyslny = 'tak')
> LEFT JOIN producenci pr ON (pr.id = p.id_producenta);
> WHERE p.id_kat = '$id_kategorii'
> AND p.widoczny = 'tak'

No dokładnie o coś takiego mi chodziło :)
Najciemniej pod latarnią, a ja nie wiedzieć czemu uparłem się że
WHERE po JOINie nie może być :/ Ehh starość chyba...

> Pozdrawiam
> Grzegorz

Również pozdrawiam i serdecznie dziękuję.

--
_______
| ___|.-----.-----.-----.
| ___|| _ | _ | |
|_______||___ |_____|__|__|
|_____|
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • red-hacjenda.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com