Autor Zpráva
oioioi
Profil *
ahoj mam tento dotaz:

SELECT ka1.*,ka2.*,ka1.menu as ka1menu,ka1.menu2 as ka1menu2 
FROM menu as ka1, data as ka2 
WHERE ka1.menu_id='40' and ka1.id=ka2.menu2
ORDER BY ka1.menu


struktura DB:
menu:
ID MENU MENU_ID
40 neco 0
44 auto 40
49 pepa 40
52 test 40

data:
ID MENU2
1 44
2 49
3 44

a jde mi o to ze chci vypsat z DB menu ty polozky ktery maji menu_id = 40 a jejich ID je v databazi DATA
tak jak to mam ted mi to vypise: auto, auto, pepa
a ja chci aby to vypsalo auto, pepa --- proste vypise mi to AUTO tolikrat kolikrat se nachazi v DB data

poradil by nekdo? dik
Kajman_
Profil *
menu_id = 40 a jejich ID
A když je k tomu více id, tak chcete co?
oioioi
Profil *
nechapu ;)
Kajman_
Profil *
To jsme asi dva, píšete, že máte k jednomu záznamu více id v druhé tabulce, ale vadí Vám, když se vypíší všechny kombinace (dvakrát "auto" s různými id z tabulky data). Zkuste jasně popsat, co chcete, pak se třeba pochopíme.
oioioi
Profil *
no mam tabulku MENU v te jsou polozky ktery se vypisujou jako menu

pak mam tabulku DATA kde jsou polozky co se vypisujou po rozklikavani menu

a ja chcu udelat to ze to menu se nezobrazi pokud v ni nejsou zadny DATA

takze jsem to delal tak WHERE ka1.menu_id='40' and ka1.id=ka2.menu2

ka1.menu_id='40' vybere z menu ty polozky ktery maji menu_id 40 a zaroven chcu aby to vybralo POUZE ty polozky z menu ktery jsou obsazeny i v tabulce DATA == ma to vypsat auto, pepa (test kterej neni v DATA tak se nevypise) ono to funguje ale vypise to AUTO 2x protoze je v tabulce DATA 2x a ja chci aby vsechno vypsalo pouze 1x
Kajman_
Profil *
select distinct ka1.* from ...
oioioi
Profil *
dal jsem:

SELECT DISTINCT ka1.*,ka2.*,ka1.menu as ka1menu,ka1.menu2 as ka1menu2 
FROM menu as ka1, data as ka2 
WHERE ka1.menu_id='40' and ka1.id=ka2.menu2
ORDER BY ka1.menu


ale nepomohlo to
Joker
Profil
oioioi:
Jestli jsem to dobře pochopil, tak by stačilo nedělat kartézský součin těch tabulek, ale udělat inner join podle nějaké relevantní podmínky:
... FROM menu as ka1 JOIN data as ka2 ON ka2.menu2 = ka1.id ...
...to samo vyřadí záznamy, které v jedné z tabulek nejsou.
oioioi
Profil *
hmm napsal by jsi mi cely dotaz? ted jsem neco zkousel ale nejak to nevyslo xD
oioioi
Profil *
tak ted jsem to opet upravil ale vypise mi to uplne stejne jak v me puvodni verzi tzn 2x
nightfish
Profil
oioioi:
tak ted jsem to opet upravil ale vypise mi to uplne stejne jak v me puvodni verzi tzn 2x
Máš to rozbité.
kdyžtak sem po každé úpravě ten dotaz pošli, ať nemusíme věštit jeho podobu z kávové sedliny
(a dotazy prosím vkládej mezi značky [pre] a [/pre] (stačí kliknout na ))
oioioi
Profil *
SELECT ka1.*,ka2.*,ka1.menu as ka1menu,ka1.menu2 as ka1menu2
FROM menu as ka1 JOIN data as ka2 ON ka2.menu2=ka1.id and ka1.menu_id='".$menicko."'
oioioi
Profil *
to $menicko = 40
Kajman_
Profil *
Neignorujte radu [#6] Nevypisujte si nic z tabulky data a přidejte ten distinct.
oioioi
Profil *
Kajman:
nechapu?
Kajman_
Profil *
Vypadá to tak. Uvědomte si, že vypisujete všechny kombinace ze dvou tabulek. Podle všechno Vás ale zajímají údaje jen z tabulky menu a tabulku data používáte pouze pro omezení výběru. Proto stačí omezit výběr na tabulku menu a z ní jen jedinečné řádky.

SELECT DISTINCT ka1.*,ka1.menu as ka1menu,ka1.menu2 as ka1menu2 
FROM menu as ka1, data as ka2 
WHERE ka1.menu_id='40' and ka1.id=ka2.menu2
ORDER BY ka1.menu
oioioi
Profil *
jj to vypada ze je ono dik

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0