salutare.
vreau sa fac si eu un select, dar nu-i dau de capat
deci am 2 tabele:
produse - id, nume
caracteristici - id, nume, valoare, produs_id
vreau sa selectez produsul care are caracteristicile nume=3, valoare=2 si nume=4, valoare=3
multumesc anticipat
astept raspunsul dvs.
selectare din 2 tabele
Moderatori: Zamolxe, Moderatori
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
- fabby
- Senior Member
- Mesaje: 1071
- Membru din: Lun Aug 30, 2004 11:51 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
pai nu prea e bine, pentru ca in where inseamna ca sa indeplineasca prima conditie, sau pe a 2-a.
pe mine ma intereseaza sa o indeplineasca si pe prima SI pe a 2-a
pe mine ma intereseaza sa o indeplineasca si pe prima SI pe a 2-a
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
Pai nu vad cum ar putea un produs sa aiba si nume =3 si nume =4 si valoarea = 2 si valoare = 3.
O solutie alternativa ar fi
WHERE c.nume IN (3,4) AND c.valoare IN (2,3)
dar asta poate returna toate combinatiile dintre numerele alea.
Asa cum vad eu treaba, un produs ar trebui sa aiba ori nume 3 si valoare2 ORI nume 4 si valoare 3 nu toate cum zici tu
O solutie alternativa ar fi
WHERE c.nume IN (3,4) AND c.valoare IN (2,3)
dar asta poate returna toate combinatiile dintre numerele alea.
Asa cum vad eu treaba, un produs ar trebui sa aiba ori nume 3 si valoare2 ORI nume 4 si valoare 3 nu toate cum zici tu
1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
- fabby
- Senior Member
- Mesaje: 1071
- Membru din: Lun Aug 30, 2004 11:51 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
ca sa explic mai clar problema, exista o lista de produse, si fiecare produs, are niste caracteristici (culoare, dimensiune, forma, etc)
presupunem ca din admin, se selecteaza caracteristica: culoare = rosu, forma = rotunda
vreau ca la cautare, daca bifeaza si culoare=rosu, si forma=rotunda, sa-mi arate produsele cu acele 2 caracteristici.
cam asta e ideea
presupunem ca din admin, se selecteaza caracteristica: culoare = rosu, forma = rotunda
vreau ca la cautare, daca bifeaza si culoare=rosu, si forma=rotunda, sa-mi arate produsele cu acele 2 caracteristici.
cam asta e ideea
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
pai ar trebui sa mearga cum am zis in prima varianta, cu and si or..
1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
- fabby
- Senior Member
- Mesaje: 1071
- Membru din: Lun Aug 30, 2004 11:51 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
nu merge cum trebuie
daca un produs are doar o caracteristica din cele 2 care sunt in where, se afiseaza si ala
o solutie ar fi, dar nu stiu cum sa o pun in practica, in felul urmator:
mie imi da ca rezultat, daca pun sub forma aia sql-ul, ca rezultat
acelasi produs, afisat de 2 ori (din cauza ca indeplineste ambele conditii)
un alt produs, afisat odata, (din cauza ca doar odata indeplineste conditia)
si solutia ar fi sa pun ceva de genul:
SELECT p.*
FROM products as p
LEFT JOIN products_characteristics as c
ON p.id = c.product_id
WHERE c.name IN (5,6) AND c.value IN (23,30)
having count(p.id) = '2'
unde valoarea de la having count se modifica in functie de cate valori sunt la where -> in
i-am dat de capat. asta-i sql-ul corect:
SELECT p . *
FROM products AS p
LEFT JOIN products_characteristics AS c ON p.id = c.product_id
WHERE c.name IN ( 5, 6 ) AND c.value IN ( 23, 30 )
GROUP BY p.id
HAVING COUNT( p.id ) = '2'
LIMIT 0 , 30
daca un produs are doar o caracteristica din cele 2 care sunt in where, se afiseaza si ala
o solutie ar fi, dar nu stiu cum sa o pun in practica, in felul urmator:
mie imi da ca rezultat, daca pun sub forma aia sql-ul, ca rezultat
acelasi produs, afisat de 2 ori (din cauza ca indeplineste ambele conditii)
un alt produs, afisat odata, (din cauza ca doar odata indeplineste conditia)
si solutia ar fi sa pun ceva de genul:
SELECT p.*
FROM products as p
LEFT JOIN products_characteristics as c
ON p.id = c.product_id
WHERE c.name IN (5,6) AND c.value IN (23,30)
having count(p.id) = '2'
unde valoarea de la having count se modifica in functie de cate valori sunt la where -> in
i-am dat de capat. asta-i sql-ul corect:
SELECT p . *
FROM products AS p
LEFT JOIN products_characteristics AS c ON p.id = c.product_id
WHERE c.name IN ( 5, 6 ) AND c.value IN ( 23, 30 )
GROUP BY p.id
HAVING COUNT( p.id ) = '2'
LIMIT 0 , 30
Re: selectare din 2 tabele
Nu stiu MySQL si nici nu am ca sa testez, dar eu cred ca daca ai un produs introdus de doua ori si o singura caracteristica indeplinita am impresia ca ti-l returneaza. As face 3 tabele si as scrie altfel selectul. Dar daca acelasi produs cu aceeasi caracteristica nu are voie sa existe in tabela cred ca e bine cum ai facut tu.
- fabby
- Senior Member
- Mesaje: 1071
- Membru din: Lun Aug 30, 2004 11:51 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
nu se poate introduce un produs de 2 ori (oricum ar avea un id diferit, deci nu conteaza asta)
plus ca, avand id diferit, chiar dc e introdus de 2 ori, se face group by id, deci e ok.
am testat si merge perfect
plus ca, avand id diferit, chiar dc e introdus de 2 ori, se face group by id, deci e ok.
am testat si merge perfect
-
BogdanSAHLEAN
- New Member
- Mesaje: 3
- Membru din: Joi Apr 18, 2013 3:46 pm
Re: selectare din 2 tabele
Ultima oară modificat Joi Apr 18, 2013 4:34 pm de către BogdanSAHLEAN, modificat 1 dată în total.
- fabby
- Senior Member
- Mesaje: 1071
- Membru din: Lun Aug 30, 2004 11:51 pm
- Localitate: Bucuresti
- Contact:
Re: selectare din 2 tabele
asa cum am mai zis, am rezolvat.
ms!
ms!
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 11 vizitatori
