Autor | Zpráva | ||
---|---|---|---|
crossbone Profil * |
#1 · Zasláno: 23. 7. 2009, 14:48:35
Ahoj,
mysql moc nedělám ale potřeboval bych pomoc s tímhle dotazem: SELECT * FROM parametry_seznam WHERE id IN (SELECT idParametr FROM parametry_hodnoty WHERE idProdukt='1' GROUP BY idParametr) AND filtr='1' GROUP BY nazev ORDER BY poradi ASC tam kde je to WHERE idProdukt='1' četl jsem si tento článek http://www.linuxsoft.cz/article.php?id_article=882 ale moc tomu nerozumím... předem díky za ochotu |
||
TomášK Profil |
#2 · Zasláno: 23. 7. 2009, 14:58:34
Odkud se berou ty idProduktu? Z formuláře, který ti přijde na web nebo jsou výsledkem nějakého výpočtu? Pokud jsou z formuláře, pak nezbývá nic jiného, než je explicitně vypsat - v dotazu někde musí být uloženo, co se po něm chce. Jde to trochu zjednodušit:
WHERE idProdukt IN (1, 2, 3, ...) Pokud jsou to výsledky nějakého předešlého dotazu, pak by ty dotazy asi šli spojit do jednoho, ale je potřeba vidět i ten předchozí. |
||
crossbone Profil * |
#3 · Zasláno: 23. 7. 2009, 15:21:10
už jsem to vyřešil jinak, ale díky za ochotu :)
|
||
crossbone Profil * |
#4 · Zasláno: 23. 7. 2009, 23:33:50
přece jenom bych něco potřeboval...
když mám tabulku například "panelak" a ta má 3 sloupce, první sloupec je primární klíč ten tam nehraje roli... druhej sloupec je například číslo pokoje, a třetí sloupec je číslo ubytovaného hosta. S tim, že jeden host může být ubytován ve více pokojích. A já chci, složit dotaz, kterej mi najde průnik například dvou hostů, číslo pokoje neznám - kdybych ho znal tak to dokážu napsat... zkrátka potřebuju najít číslo pokoje, ve kterým bydlí host 1,2 a 3... SELECT cislo_pokoje FROM panelak WHERE .... díky za ochotu |
||
TomášK Profil |
#5 · Zasláno: 23. 7. 2009, 23:44:09
Zkus tohle:
SELECT cislo_pokoje FROM panelak WHERE cislo_hosta IN (1,2,3) GROUP BY cislo_pokoje HAVING COUNT(DISTINCT id) = 3 |
||
crossbone Profil * |
#6 · Zasláno: 23. 7. 2009, 23:55:22
nešlo by to spíše přes INTERSECT?
|
||
crossbone Profil * |
#7 · Zasláno: 23. 7. 2009, 23:56:51
vysvětlíš mi prosím co dělá toto?
HAVING COUNT(DISTINCT id) = 3 |
||
TomášK Profil |
#8 · Zasláno: 24. 7. 2009, 02:17:26
Už tam vidím chybu, omlouvám se:
SELECT cislo_pokoje FROM panelak WHERE cislo_hosta IN (1,2,3) GROUP BY cislo_pokoje HAVING COUNT(DISTINCT cislo_hosta) = 3 Operátor INTERSECT nebo něco jemu podobného v MySQL neznám. Ale to neznamená, že to tam není. Ten dotaz by šel napsat i pomocí joinů SELECT * FROM panelak p1 JOIN panelak p2 ON p1.cislo_pokoje = p2.cislo_pokoje AND p2.cislo_hosta = 2 JOIN panelak p3 ON p1.cislo_pokoje = p3.cislo_pokoje AND p3.cislo_hosta = 3 WHERE p1.cislo_hosta = 1; |
||
Časová prodleva: 15 let
|
0