| | |
| Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
Autor | Správa |
---|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal Lier: 25.10.2012 15:45 | |
|
ahojte, mam tabulku:
Chcel by som povyberat vsetky User ID podla toho, aby meta_value boli Kvetinarstvo a Bardejov.
skusam hocijake spojenia, ale uz som v .. .
Neviete mi poradit?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Toto su uplne zaklady, tie by si mal ovladat. Aky select ti nefungoval?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 25.10.2012 16:39 | |
|
No tento, ale ked sa nanho pozeram, tak nema logiku.
Kód: select user_id FROM npu_usermeta WHERE meta_value = 'Bardejov' && meta_value = 'Kvetinárstvo'
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 25.10.2012 16:57 | |
|
Chceš vybrať všetky vyhovujúce výsledky a používaš logický operátor AND medzi tvojimi dvoma podmienkami?
Podľa tvojho príkazu by sa mal vybrať záznam s hodnotou poľa meta_value == "Bardejov" a zároveň meta_value == "Kvetinárstvo", no a to je nezmysel (ani jeden záznam nevyhovuje podmienke), takže použi operátor OR (pravdivý jeden, alebo druhý výrok)
Kód: SELECT user_id FROM npu_usermeta WHERE meta_value = 'Bardejov' OR meta_value = 'Kvetinárstvo'
Výstup by mal teda vyzerať takto:
_________________ always is always wrong |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 25.10.2012 17:12 | |
|
Noide o to, ze inde zas mam Presov Kvetinarstvo a to ak bude alebo, vypise tiez, lebo je tam kvetinarstvo.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Mozno by bolo lepsie, keby si porovnaval meta_key mestoob a kateg s meta_value. Kedze mas jednotlive meta_key v riadkoch, a nie v stlpcoch, potrebujes najst take riadky, kde meta_key mestoob = Bardejov alebo meta_key kateg = Kvetinarstvo. Vo vysledku sa ti potom mozu zobrazit taki useri, ktori vyplnili sucasne Bardejov aj Kvetinarstvo, alebo len jedno z nich. Teba vsak zaujimaju len ti, ktori maju obe (pocet riadkov vo vysledku pre jednotlive user_id musi byt prave 2) - jedno z moznych rieseni.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 25.10.2012 17:19 | |
|
Prepac stenley, ale neviem ako to napisat.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Nebudem ti pisal vysledny select, ale len kroky, ako sa k nemu dopracujes - je to to iste, co som ti pisal pred tym, len v inej forme. Z tohto by si mal byt schopny vytvorit spravny select:
1. Vyberies tie zaznamy, kde meta_key je mestoob a meta_value je Bardejov, alebo meta_key je kateg a meta_value je Kvetinarstvo
2. Zgrupis to podla user_id
3. Z vysledku vyberies len tie user_id, ktore mali vyplnene aj Bardejov, aj Kvetinarstvo
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 25.10.2012 23:41 | |
|
tak neviem ci si to takto myslel, ale funguje to :
Kód: $Epod= mysql_query("select user_id FROM npu_usermeta WHERE meta_value = 'Pohrebníctvo' GROUP BY user_id"); while($Epodro = mysql_fetch_array($Epod)) { $user_ids = $Epodro['user_id']; $Epoda= mysql_query("select * FROM npu_usermeta WHERE meta_key = 'okress' AND meta_value = 'Bardejov' AND user_id = '$user_ids' GROUP BY user_id"); while($Epodrow = mysql_fetch_array($Epoda)) {
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
V tvojom pripade sa vykona n+1 selectov, to je zbytocne, ale aspon si nejake riesenie nasiel. Skus to este zredukovat na jeden select a bude to super.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 25.10.2012 23:59 | |
|
zial neviem tam spojit tie dve meta_value v jednom selecte. Lebopokial vyberiem dva riadky a potom dam volat meta_value, tak mi ukaze len jeden a nie z oboch riadkov.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Toto ti vyberie oba:
Kód: (meta_key = 'mestoob' AND meta_value = 'Bardejov') OR (meta_key = 'kateg' AND meta_value = 'Kvetinárstvo')
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 10.07.07 Prihlásený: 10.08.16 Príspevky: 128 Témy: 40 | Napísal autor témy Lier: 26.10.2012 0:36 | |
|
tak ked dam vypisat meta_value .. vypise Kvetinarsvo, pokial nedam GROUP BY tak vypise aj Bardejov. No tak mam dva vysledky. No skusim na to pozriet, pokus ..omyl a uvidime co a ako. No v kazdom pripade si mi pomohol .. dakujem
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
K 3. bodu si pozri, ako sa pouziva HAVING - tym padom to uz budes mat cele spravene.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
| Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|