Autor | Zpráva | ||
---|---|---|---|
Pesulap Profil |
#1 · Zasláno: 14. 12. 2010, 19:46:20
Ahoj,
chtěl bych vytvořit dotaz, který mi vypíše tuto situaci. Chci vypsat knihy, které jsou v tabulce "knihy", z kategorií číslo 3 a 4 podle ceny. tabulka knihy: id_knihy,jmeno, cena,autor. tabulka spojeni id,id_kategorie,id_knihy Dotaz $dotaz=mysql_query("SELECT * FROM knihy WHERE *** ORDER BY ceny DESC"); while($kn=mysql_fetch_array($dotaz)){ echo '...'; } Potřebuji tam doplnit místo těch *** podmínku, že má vybrat jen knihy, které mají v tabulce "spojeni" řádky o obsahu id_knihy, 3 nebo ID_knihy, 4 Snad tomu porozumíte. Děkuji |
||
paul27 Profil * |
#2 · Zasláno: 14. 12. 2010, 20:08:59
Třeba:
select id_knihy,jmeno,cena,autor from knihy,spojeni where knihy.id_knihy=spojeni.id_knihy and (spojeni.id_knihy=3 or spojeni.id_knihy=4) order by cena desc; |
||
Pesulap Profil |
#3 · Zasláno: 14. 12. 2010, 20:21:49
Asi jsem to špatně napsal..
Ukázka tabulek Knihy 1,RUR,1000,ČAPEK 2,URU,999,NOVÁK 3,FRK,299,VACEK Kategorie(ID,jmeno) 1,beletrie 2,komedie 3,drama 4,komiks Spojeni(ID,ID_kategorie,ID_knihy) 1,1,2 1,4,1 1,3,3 Takže podle zadání by se měli vypsat knihy ID 1 a ID 3 Díky |
||
paul27 Profil * |
#4 · Zasláno: 14. 12. 2010, 20:26:58
Ta struktura mi přišla nějaká divná. Tak tedy toto:
select id_knihy,jmeno,cena,autor from knihy,spojeni,kategorie where knihy.id_knihy=spojeni.id_knihy and spojeni.id_kategorie=kategorie.id_kategorie and kategorie.id_kategorie in (3,4) order by cena desc; Každopádně to je dvakrát inner join (píšu to všechno do where, lze to přepsat i pomocí inner join - to je úplně jedno) a podmínka na id té požadované kategorie. |
||
Pesulap Profil |
#5 · Zasláno: 14. 12. 2010, 20:28:19
mohl by jsi mi tu popsat i tu druhou možnost. Rád s přiučím .
Děkuji |
||
paul27 Profil * |
#6 · Zasláno: 14. 12. 2010, 20:30:24
Pomocí inner join:
select id_knihy,jmeno,cena,autor from knihy inner join spojeni on knihy.id_knihy=spojeni.id_knihy inner join kategorie on spojeni.id_kategorie=kategorie.id_kategorie where kategorie.id_kategorie in (3,4) order by cena desc; |
||
Pesulap Profil |
#7 · Zasláno: 14. 12. 2010, 20:34:25
Lze použít místo id_knihy,jmeno,cena,autor tohle * ? mám tam mnohem víc sloupečků a vypisovat je je nesmysl
|
||
paul27 Profil * |
#8 · Zasláno: 14. 12. 2010, 20:40:37
Pokud napíšete jenom select * from ... tak se vypíšou všechny sloupečky ze všech tabulek, které v tom selectu máte uvedeny. Všechny sloupečky pouze z tabulky knihy lze vypsat třeba takto: select knihy.* from ...
|
||
Keeehi Profil |
#9 · Zasláno: 14. 12. 2010, 21:23:30
Pesulap:
„Lze použít“ Ano lze. Uvažte však, jestli je to opravdu tolik práce tam ty sloupečky vypsat. To že si při zapisování dotazu ušetříte dvě minuty práce Vás potom může třeba stát větší náročnost scriptu na server. Z databáze tím můžete přenášet data, která třeba ani nevyužijete. |
||
Časová prodleva: 13 let
|
0