selectare din 2 tabele

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

selectare din 2 tabele

Mesajde fabby » Mar Apr 09, 2013 10:40 pm

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.


Today is a good day for... php
www.anunturi-utile.ro - anunturi gratuite

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Re: selectare din 2 tabele

Mesajde MihaiC » Mar Apr 09, 2013 11:55 pm

Dev @

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde Birkoff » Mie Apr 10, 2013 12:00 am

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.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde fabby » Mie Apr 10, 2013 10:23 am

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
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde Birkoff » Mie Apr 10, 2013 12:37 pm

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
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.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde fabby » Mie Apr 10, 2013 12:44 pm

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
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde Birkoff » Mie Apr 10, 2013 1:16 pm

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.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde fabby » Mie Apr 10, 2013 6:08 pm

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
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

floorin
Senior Member
Mesaje: 247
Membru din: Joi Iun 29, 2006 6:03 pm

Re: selectare din 2 tabele

Mesajde floorin » Vin Apr 12, 2013 1:57 pm

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.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde fabby » Vin Apr 12, 2013 2:06 pm

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
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

BogdanSAHLEAN
New Member
Mesaje: 3
Membru din: Joi Apr 18, 2013 3:46 pm

Re: selectare din 2 tabele

Mesajde BogdanSAHLEAN » Joi Apr 18, 2013 4:22 pm

Ultima oară modificat Joi Apr 18, 2013 4:34 pm de către BogdanSAHLEAN, modificat 1 dată în total.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Re: selectare din 2 tabele

Mesajde fabby » Joi Apr 18, 2013 4:29 pm

asa cum am mai zis, am rezolvat.
ms!
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 15 vizitatori