ďťż
 
Re: [mysql] select z kilku tabel ďťż
 
Re: [mysql] select z kilku tabel
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

Re: [mysql] select z kilku tabel



Paweł Matejski - 30-07-2006 00:44

  Mitis wrote:
> Witam,
>
> Teoretycznie; produkt {
> id
> nazwa
> }
> produkt_parametr {
> id_produkt
> id_kategoria
> id_cena
> }
> kategoria {
> id
> nazwa
> }
> cena {
> id
> wartosc
> }
>
> zapytujac jednym pytaniem o nazwe produktu, kategorie produktu i cene np
> tak:
> SELECT id,nazwa,
> (SELECT nazwa FROM kategoria WHERE id=
> (SELECT id_kategoria FROM produkt_parametr WHERE
> id_produkt=produkty.id)
> ) as pkategoria,
> (SELECT wartosc FROM cena WHERE id=
> (SELECT id_cena FROM produkt_parametr WHERE id_produkt=produkty.id)
> ) as pcena
> FROM produkty

O rany....

> Osiagne "podane wszystko na tacy" ale czy nie bedzie to przy duzej
> ilosci produktow (ponad 10,000) wolniejsze

Na tacy?!

> od np. 2 czy 3 osobnych zapytan + polaczenie tego potem aplikacja ?
> Oryginalnie tabela produkt ma 12 kolumn i tabela produkt_parametr ma 9,
> z tego co wiem nalezy unikac tabel z duza ilosc kolumn, stad podzielilem
> produkt na dwie. Wyszukiwanie odbywac sie bedzie po parametrach czyli po
> samych ID.

Taka optymalizacja to ma znaczenie przy duuuużych bazach, bo zyskujesz
procenty czasu zapytania. Powyższym zapytaniem tracisz dużo więcej.

> Przy okazji mam pytanie 2. Czy ma sens w tabeli produkt_parametr
> definiowani wszystkich kolumn id_XXXXXX jako indeksy ?

To zależy od zapytań.

Podsumowując - zapomnij o optymalizacji. Weź jakąś książkę, tutorial,
czy cokolwiek i naucz się podstaw SQL'a. I nie kombinuj. A Twoja baza
będzie działała wystarczająco szybko.

--
P.M.





Dawid Kloch - 30-07-2006 00:44

  >
> Podsumowując - zapomnij o optymalizacji. Weź jakąś książkę, tutorial,
> czy cokolwiek i naucz się podstaw SQL'a. I nie kombinuj. A Twoja baza
> będzie działała wystarczająco szybko.
>

Może i starsze wersje mysql były ubogie ale takich cyrków się jednak nie
dało zrobić ;)

JOIN JOIN JOIN !!!

pozdrawiam
Dawid




Mitis - 30-07-2006 00:45

  Aaye Dawid,

>> Podsumowując - zapomnij o optymalizacji. Weź jakąś książkę, tutorial,
>> czy cokolwiek i naucz się podstaw SQL'a. I nie kombinuj. A Twoja baza
>> będzie działała wystarczająco szybko.
>>
> Może i starsze wersje mysql były ubogie ale takich cyrków się jednak
> nie dało zrobić ;)
>
> JOIN JOIN JOIN !!!

no tak myslalem ze troche "za daleko" zaszedlem ;)

Mysle nad JOIN ale jakos nie moge tego skontruowac, poniewaz tu sa 3 tabele
w to wszystko zamieszane. Manual od mysql+strony mysql.org mam juz prawie
w autostarcie bo wisi na pasku od 3 dni, jednak doczytac cos a przelozyc
to na praktyke to 2 rozne zeczy...
Prosze zyczliwych o przyklad: Jak zapytac o produkt i katergorie jednoczesnie
uzywajac JOIN ? Jak posortowac produkty po cenie ?

Pozdrawiam
Bartek

>
> pozdrawiam
> Dawid




Przemyslaw Popielarski - 30-07-2006 00:45

  Mitis wrote:
> Mysle nad JOIN ale jakos nie moge tego skontruowac, poniewaz tu sa 3
> tabele w to wszystko zamieszane.

select * from
produkt p inner join produkt_parametr pp on p.id=pp.id_produkt
inner join kategoria k on pp.id_kategoria=k.id
inner join cena c on pp.id_cena=c.id

--
../ premax
../ premax@hot.pl
../ koniec i bomba, a kto czytal ten traba. w.g.





Mitis - 30-07-2006 00:45

  Aaye Mitis,

> Aaye Dawid,
>>
>> JOIN JOIN JOIN !!!
>>
> no tak myslalem ze troche "za daleko" zaszedlem ;)
>
> Mysle nad JOIN ale jakos nie moge tego skontruowac, poniewaz tu sa 3
> tabele
> w to wszystko zamieszane. Manual od mysql+strony mysql.org mam juz
> prawie
> w autostarcie bo wisi na pasku od 3 dni, jednak doczytac cos a
> przelozyc
> to na praktyke to 2 rozne zeczy...
> Prosze zyczliwych o przyklad: Jak zapytac o produkt i katergorie
> jednoczesnie
> uzywajac JOIN ? Jak posortowac produkty po cenie ?

Juz mam, join (no jest duzo duzo czytelniejsze :D), ale mam pytanie, join
laczy tabele, czy mozna zmusic ta instrukcje aby dolaczyla tylko czesc kolumn
tabeli, np. kategoria ma pole ID ktore mi nie jest kompletnie potrzebne,
pytam, bo jak wspomnialem tabele maja dosc duzo kolumn ?

Pozdr
Bartek




Mitis - 30-07-2006 00:45

  Aaye Mitis,

Poradzilem sobie, dziekuje wszystim za slowa krytyki (ktore mi sie niewatpliwie
nalezaly) i za pomoc.

Pozdr
Bartek

ps. zamiast select-masakrator mam teraz (juz oryginalnie), wlaczajac sortowanie
;)

SELECT p.*, pp.*, c.name as cname FROM products as p, products_params as
pp, category as c
WHERE p.id=pp.id_product AND c.id=pp.id_category order by cname desc
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [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?= MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?= [MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shanti.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