התייאשתי אז הגעתי...SQL

rondadon

New member
התייאשתי אז הגעתי...SQL

שלום לכולם,

לאחר שבירת ראש ואי הצלחה, אשמח לעזרה.
יש לי טבלה, המכילה 3 שדות.
שדה אחד - מזהה אדם
שדה שני - מזהה מאפיין
שדה שלישי - מזהה ערך של מאפיין.

לצורך הדוגמה - שורה יכולה להיות 1,1,1, כאשר הכוונה לאדם מס' 1 (נניח "דני"), מאפיין מס' 1 (נניח "צבע שיער") וערך המאפיין 1 (נניח "שחור").

כולם מקושרים לטבלאות המתאימות (טבלת אנשים, טבלת מאפיינים וטבלת ערכי מאפיינים).

אני צריך לבצע חיפוש, שיחזיר לי את כל המזהים של אדם, שעונה לתכונות x,y,z... עם ערכי תכונות a,b,c...
לדוגמה, את כל המזהים של אנשים בעלי שיער שחור או חום ושגם הגובה שלהם 160 או 170.

ניסיתי עם השאילותות הבאות:

SELECT uid FROM table WHERE pid IN ? AND vid IN ?
כאשר במקום ? כמובן שאני מכניס סוגריים עם הערכים הנחוצים מופרדים בפסיק.
התוצאה לא טובה - אני מקבל את המזהים של האנשים שיש להם לדוגמה שיער שחור *או* חום או גובה 160 או 170...במקום ה"וגם" שרציתי.

ניסיתי לעשות את זה עם שירשור של AND, לדוגמה שהתנאי WHERE יהיה:
(pid=x AND vid=y) AND (pid=z AND vid=a) AND....
תמיד החזיר תוצאה ריקה.

ניסיתי לחשוב לכיוון של GROUP BY ופונקציה מתאימה, אבל לא עלה לי שום דבר הגיוני :/

מצרף צילום מסך של PHPMYADMIN של הטבלה ושל שאילתה לדוגמה.
במקרה הזה, אני הייתי רוצה לקבל את מזהה 4 לדוגמה.

אשמח לעזרה :)
 

i t a i b

New member
תנסה כך

select id
from table
where (user_prod_pid=1 and usr_prop_vid=7) or (user_prod_pid=2 and usr_prop_vid=10)
 

rondadon

New member
מעולה!

הייתי בכיוון אבל פיספסתי את הנקודה של להשוות למספר התכונות :)

תודה רבה!
 
למעלה