Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

vyber s viacerych tabuliek mysql

middlesboro
verified
rating uzivatele
(10 hodnocení)
10. 2. 2010 16:06:16
mam tabulky produkt_param :
-id
- produkt_id
- parameter_id
- hodnota
- category_id
- id_search
a produkt :
- produkt_id
- nazov
- categoria
tabulka produkt obsahuje data napr.
produkt_id : 1
nazov : monitor
categoria : 1
produkt_id : 2
nazov : tv
categoria : 2
tabulka produkt_param obsahuje napr.
id : 1
produkt_id : 1
parameter_id : 30
hodnota : 17 palcov
category_id : 1
id_search : 1
id : 2
produkt_id : 1
parameter_id : 35
hodnota : biela farba
category_id : 1
id_search : 1
V tabulke produkt mam ulozene vsetky produkty a v tabulke produkt_param vsetky parametre. A ja potrebujem vybrat taky produkt ktory ma v tabulke produkt_param produkt_id 1, parameter_id 30 a zaroven aj parameter_id 35.
skusal som to napr. takto
:
ale ty vyhladam len produkty ktore maju parameter_id 30, no ja tam potrebujem zohladnit aj ten riadok s tym parameter_id 35.
da sa to nejako vlozit do jedneho sql prikazu ? diky
10. 2. 2010 16:06:16
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455753
Popisujete to dost zmateně - uvádíte nemožnou podmínku
ktory ma v tabulke produkt_param produkt_id 1, parameter_id 30 a zaroven aj parameter_id 35
ale pokud vám dobře rozumím a myslíte "30 nebo 35", tak v tom přece není problém:
WHERE id_search = 1 AND parameter_id IN (30, 35)
10. 2. 2010 16:14:54
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455752
dracek
verified
rating uzivatele
(26 hodnocení)
10. 2. 2010 16:17:30
select * from A.produkt, B.produkt_param where B.produkt_id = 1 and B.parameter_id IN (30, 35)
nebo tak nejak. nejsem si jistej syntaxi ani tim, jestli je to nejlepsi metoda
10. 2. 2010 16:17:30
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455751
middlesboro
verified
rating uzivatele
(10 hodnocení)
10. 2. 2010 16:30:29
to by fungovalo ale ja nechcem vybrat 30 alebo 35. ja potrebujem vybrat taky zazanam z tabulky produkt, ktory ma v tabulke produkt_param 2 zaznami. jeden s tou hodnotou 30 a druhy s hodnotou 35. ale pozadujem to aby oba existovali. nielen ten jeden. a chcel by som vediet ci sa to da pomocou sql ? dakujem
Napsal Retal;455488
Popisujete to dost zmateně - uvádíte nemožnou podmínku
ale pokud vám dobře rozumím a myslíte "30 nebo 35", tak v tom přece není problém:
WHERE id_search = 1 AND parameter_id IN (30, 35)
---------- Post was amended at 16:50 ----------
v podstate hladam opak k IN
10. 2. 2010 16:30:29
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455750
Tomáš Burda
verified
rating uzivatele
(1 hodnocení)
10. 2. 2010 17:03:44
Opak IN je NOT IN()
Jinak si teda myslim, že je to pěkná patlanina, nebo nejsi pořádně schopen popsat to co potřebuješ.
10. 2. 2010 17:03:44
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455749
middlesboro
verified
rating uzivatele
(10 hodnocení)
10. 2. 2010 17:22:05
este raz skusim vysvetlit mam napr. tabulku s menami lubo, marek, tomas.
ak pouzijem select * from tabulka where meno in (marek,lubo)
vyberie mi tie 2 riadky kde su mena marek a lubo. ja potrebujem taku funkciu ktora mi vrati vysledok iba vtedy ak sa v tej tabulku vyskutuje riadok s menom aj lubo aj marek. takze ak budem mat tabulku v ktorej mi bude chybat riadok s menom napr. marek nevrati mi ziadne vysledky.
je to zrozumitelne ?
10. 2. 2010 17:22:05
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455748
Tomáš Burda
verified
rating uzivatele
(1 hodnocení)
10. 2. 2010 18:23:49
Tak už to chápu, ta věta opak IN() byla docela matoucí, ale jak to udělat jednoduše nevím, jedine s použitím nějakých ifů v db a to je složitější na psaní.
Možná se najde někdo chytřejší.
10. 2. 2010 18:23:49
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455747
middlesboro
verified
rating uzivatele
(10 hodnocení)
11. 2. 2010 10:26:05
a nedao by sa to urobit pomocou viaceryc sql a v potom ze by som si to v php nejako porovnal ?
11. 2. 2010 10:26:05
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455746
dracek
verified
rating uzivatele
(26 hodnocení)
11. 2. 2010 11:28:25
teď už to teda vůbec nechápu jak to chceš :)
ale podle téhle věty
Napsal middlesboro;455481
V tabulke produkt mam ulozene vsetky produkty a v tabulke produkt_param vsetky parametre. A ja potrebujem vybrat taky produkt ktory ma v tabulke produkt_param produkt_id 1, parameter_id 30 a zaroven aj parameter_id 35.
tak by to mělo být takto, ne?
SELECT produkt_id
FROM produkt_param
WHERE produkt_id = (SELECT produkt_id FROM produkt_param WHERE produkt_id = 1 AND parameter_id = 30)
AND parameter_id=35;
11. 2. 2010 11:28:25
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455745
middlesboro
verified
rating uzivatele
(10 hodnocení)
11. 2. 2010 12:12:29
ono to normalne funguje presne takto som to potreboval ::) diky
este mam jednu otazku. ked si vytvaram novu tabulku v mysql je tam nejake obmedzenie kolko atributov si v nej mozem vytvorit ?
napr. vytvorim si tabuku mena a v nej atributy : id, meno, vek... a je tam nejake obmedzenie kolko tych atributov tam moze byt. nema s tym mysql problem ak ich tam je vela. napr. 40 ? nemate s tym niekto skusenosti ?
Napsal dracek;456031
teď už to teda vůbec nechápu jak to chceš :)
ale podle téhle věty
tak by to mělo být takto, ne?
SELECT produkt_id
FROM produkt_param
WHERE produkt_id = (SELECT produkt_id FROM produkt_param WHERE produkt_id = 1 AND parameter_id = 30)
AND parameter_id=35;
11. 2. 2010 12:12:29
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455744
dracek
verified
rating uzivatele
(26 hodnocení)
11. 2. 2010 12:49:49
minimálně 2 tisíce. Nevím přesně
11. 2. 2010 12:49:49
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455743
Kazan
verified
rating uzivatele
(4 hodnocení)
11. 2. 2010 13:38:29
Mám pocit, že maximum je 2599 sloupců v tabulce
11. 2. 2010 13:38:29
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455742
Radim D.
verified
rating uzivatele
(7 hodnocení)
11. 2. 2010 23:58:42
SELECT produkt_id
FROM produkt_param
WHERE produkt_id = (SELECT produkt_id FROM produkt_param WHERE produkt_id = 1 AND parameter_id = 30)
AND parameter_id=35;
Nevýhoda tohohle je, že pokud by mě zajímaly třeba 3 parameter_id, musel by dotaz obsahovat 2 vnořené SELECTy, kdyby mě zajímal produkt, který má zároveň 10 parametrů, musel bych mít 9 vnořených SELECTů.
Já doporučuji tohle:
SELECT produkt_id
FROM produkt_param
WHERE parameter_id IN (30, 35)
AND produkt_id = 1
GROUP BY produkt_id
HAVING COUNT(*) > 2
Pokud by mě zajímalo více parameter_id, rozšířím výčet prvků v závorce o odpovídající hodnoty a dole za HAVING zvýším odpovídajíím způsobem číslo 2.
Tenhle dotaz vrací jen 1, pokud produkt s id 1 má dva odpovídající parametry, jinak nevrací nic. Kdyby jsi ale dal pryč AND produkt_id = 1, vrací to id všech produktů, které mají odpovídající parametry.
Nebude to fungovat, pokud kombinace parametr_id a produkt_id v tabulce parametrů nebude unikátní. To si ale myslím, že je nesmysl. Mimochodem, pokud nejsou parametr_id a produkt_id unikátní, nebude fungovat ani Tvé řešení. Musel by jsi opravit .... WHERE produkt_id = (SELECT .... na ....WHERE produkt_id IN (SELECT ....
http://www.cestovatele.info
---------- Doplňující příspěvek odeslán v 00:03 ----------
Teď mě došlo, Ty chceš asi data z tabulky produktů, takže můj SELECT obal ještě jedním SELECTem.
SELECT *
FROM produkt
WHERE produkt_id IN
(
SELECT produkt_id
FROM produkt_param
WHERE parameter_id IN (30, 35)
AND produkt_id = 1
GROUP BY produkt_id
HAVING COUNT(*) > 2
)
Pokud dáš pryč "AND produkt_id = 1", platí to samé, co jsem psal výše.
11. 2. 2010 23:58:42
https://webtrh.cz/diskuse/vyber-s-viacerych-tabuliek-mysql/#reply455741
Pro odpověď se přihlašte.
Přihlásit