Autor Zpráva
Zool
Profil *
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
Tak mi to vrátí prázný řádek, pokud zadám
select ID_MIST from EN_PRO ep where ep.ID_PRO=1
vrátí mi ID 509, 500
Pokud zadám
select ID_MIST from EN_PRO ep where ep.ID_PRO=4
vrátí mi ID 499, 500 no a já potřebuju aby ten horní dotaz vrátil pouze 500 nevítě kde může být chyba. Předem děkuji
pcmanik
Profil
Zool:
Chyba struktura tabuliek, v dotaze chybu nevidim
Zool
Profil *
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
Myslim, že chyba bude v dotazu, jeden údaj nemůže mít najednou dvě hodnoty ve sloupci ID, což where hledá.
Zool
Profil *
To si taky právě taky myslím, a nevíte jak to vyřešit??
Zechy
Profil
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 *
Ano když dám OR tak to vyhledá ale to uděla sjednocení, a já potřebuji prunik
YoSarin
Profil
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 *
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

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