2016-07-19 10 views
-2

I Tabelle wie folgt aus:Multiple Where-Klausel mit denselben Spalten SQL

user_id field_id value 
1   1   toto 
2   1   tata 
2   2   tata Job 

user_id die ID meiner Benutzer ist, ist field_id die ID der Informationen über den Benutzer (name, job, etc.) und Wert ist der Wert.

Ich benutze eine Suchleiste in HTML/PHP mit 2 Felder: 'Name' und 'Job'. Wenn jemand Benutzer mit diesen beiden Feldern sucht, muss ich die Benutzer-ID abrufen, die diese beiden Bedingungen erfüllt.

Meine Frage ist: Wie in SQL all user_id, die in einer so bekommen mit zwei Zustand entsprechen: einen guten Tag

(field_id=1 and value=tata) AND (field_id=2 and value=tata's Job) 

Vielen Dank und viel!

+3

Nun zunächst ein gutes Buch oder Tutorial auf _How finden codieren SQL_ – RiggsFolly

Antwort

1

SQL führt die WHERE Logik für jede Zeile aus, nicht für den gesamten Satz. Und Felder können nicht mehr als einen Wert haben. So müssen Sie eine OR Anweisung anstelle eines AND verwenden, um beide Bedingungen erfassen:

Select User_Id, Field_Id, Value 
From  YourTable 
Where (field_id = 1 And value = 'tata') 
Or  (field_id = 2 And value = 'tata Job') 
+0

sie suchen einen Benutzer wHE re field_1 (zB der Name) ist Tata und field_2 (zB Beruf) ist 'builder '. Du suchst jeden Benutzer namens tata unabhängig von profession und jedem Builder unabhängig vom Namen –

+0

@A ツ Ich folge nicht - was meinst du? – Siyual

1

Ein Verfahren verwendet Aggregation:

select user_id 
from t 
where (field_id = 1 and value = 'tata') or (field_id = 2 and value = 'tata''s Job') 
group by user_id 
having count(distinct field_id) = 2; 
+0

Gordon ?? 'value = 'tata's Job'' Woops – RiggsFolly

+0

Dies scheint zu komplex für die Abfrage zu sein, die sie beschreiben – Siyual

+0

die' where'klause sollte sein: 'where (field_id = 1 und value =' tata ') ODER (field_id = 2 und value = 'tata''s Job ') –

0

Sie IN Anweisung verwenden können, zum Beispiel: Ihr Tabellenname ist users

SELECT user_id 
FROM users 
WHERE field_id IN (1,2) AND `value` IN ('tata','tata\'s Job') 
Verwandte Themen