Autor | Zpráva | ||
---|---|---|---|
Zool Profil * |
#1 · Zasláno: 25. 9. 2011, 22:11:03
Tak nevím jestli už programuji dlouho ale nějak mi nefunguje prunik
Mam dotaz select ID_MIST from EN_PRO ep where ep.ID_PRO=1 AND ep.ID_PRO=4 select ID_MIST from EN_PRO ep where ep.ID_PRO=1 Pokud zadám select ID_MIST from EN_PRO ep where ep.ID_PRO=4 |
||
pcmanik Profil |
#2 · Zasláno: 25. 9. 2011, 22:16:45
Zool:
Chyba struktura tabuliek, v dotaze chybu nevidim |
||
Zool Profil * |
#3 · Zasláno: 25. 9. 2011, 22:19:17
tabulka má složení následovné
CREATE TABLE IF NOT EXISTS `EN_PRO` ( `ID_EN_PRO` int(10) unsigned NOT NULL auto_increment, `ID_PRO` int(10) unsigned NOT NULL, `ID_MIST` int(10) unsigned NOT NULL, `CENA` varchar(20) default NULL, PRIMARY KEY (`ID_EN_PRO`), KEY `ID_PRO` (`ID_PRO`), KEY `ID_MIST` (`ID_MIST`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; Jak může být chyba v ve struktuře?? |
||
Zechy Profil |
#4 · Zasláno: 25. 9. 2011, 22:19:27
Myslim, že chyba bude v dotazu, jeden údaj nemůže mít najednou dvě hodnoty ve sloupci ID, což where hledá.
|
||
Zool Profil * |
#5 · Zasláno: 25. 9. 2011, 22:21:36
To si taky právě taky myslím, a nevíte jak to vyřešit??
|
||
Zechy Profil |
#6 · Zasláno: 25. 9. 2011, 22:22:33
Moh by pomoct or, když zadáš or tak bude hledat bud s ID 1 nebo s ID 4. Ale když máš AND tak hledá údaj, který má ID 1 a zároven ID 4, což žádnej nemá.
|
||
Zool Profil * |
#7 · Zasláno: 25. 9. 2011, 22:33:52
Ano když dám OR tak to vyhledá ale to uděla sjednocení, a já potřebuji prunik
|
||
YoSarin Profil |
#8 · Zasláno: 25. 9. 2011, 23:17:49
Tenhle konkrétní případ by imo šel řešit třeba takhle:
SELECT ep1.id_mist FROM en_pro ep1 LEFT JOIN en_pro ep2 ON ep2.id_mist = ep1.id_mist WHERE ep1.id_pro = 1 AND ep2.id_pro = 4; Možná existuje i nějaká lepší cesta, ale momentálně se mi na ni nedaří přijít... |
||
Kajman_ Profil * |
#9 · Zasláno: 26. 9. 2011, 10:43:06
SELECT id_mist FROM en_pro WHERE id_pro in (1, 4) GROUP BY id_mist HAVING count(distinct id_pro) = 2 -- pocet cisel v zavorce |
||
Časová prodleva: 13 let
|
0