Mehrere Spalten in Abfrage vergleichen

Sascha-LW

Benutzer
Beiträge
6
Hallo, ich hoffe ihr könnt mir helfen.
Ich habe eine Tabelle die ungefähr so aussieht:
ximg.php


Es geht um custom fields die zu einem Produkt angelegt wurden. Anhand dieser custom fields sollen Produkte nun gefiltert werden. Ich bekomme für jede custom_id einen wert geliefert der mit dem wert in dem feld custom_value der gleichen zeile verglichen werden soll.
Könnt ihr mir da helfen?
 
Werbung:

Sascha-LW

Benutzer
Beiträge
6
Ich bekomm geliefert: custom_id 10 = G und custum_id 11 = 50 und will nun alle product id's die darauf zutreffen,
in dem Fall die 21
 

Sascha-LW

Benutzer
Beiträge
6
OK, darauf bin ich auch schon gestoßen, aber leider zu keinem Vernünftigen Ergebniss gekommen. Könntest du das vllt bisschen genauer erklären?
 

akretschmer

Datenbank-Guru
Beiträge
9.848
Ich bekomm geliefert: custom_id 10 = G und custum_id 11 = 50 und will nun alle product id's die darauf zutreffen,
in dem Fall die 21

Wie bekommst Du das 'geliefert'? Mit Deinen Daten und Deiner Bedingung bekomme ich:

Code:
test=*# select * from sascha ;
 prod_id | cust_id |  cust_val
---------+---------+-------------
      21 |      10 | G
      21 |      11 | 50
      21 |      12 | 01,03,11
      25 |      10 | RG
      28 |      10 | RGB
      28 |      11 | 100
      28 |      12 | 01,05,12
     323 |      10 | G
     323 |      11 | 150
     323 |      12 | 01,02,03,11
(10 rows)

test=*# select * from sascha where (cust_id,cust_val) in ((10,'G'),(11,'50'));
 prod_id | cust_id | cust_val
---------+---------+----------
      21 |      10 | G
      21 |      11 | 50
     323 |      10 | G
(3 rows)
 

Sascha-LW

Benutzer
Beiträge
6
Vielen Dank für deine Hilfe!

Das ganze ist in einem php script, geliefert wird durch eine Eingabe.

Auf das Ergebnis von dir bin ich bisher auch gekommen, nur benötige ich nur die Produkte bei denen custom field 10 = G UND custom field 11 = 50.
Unter den Bedingungen sollte daher prod_id 320 rausfallen...
 

akretschmer

Datenbank-Guru
Beiträge
9.848
Vielen Dank für deine Hilfe!

Das ganze ist in einem php script, geliefert wird durch eine Eingabe.

Auf das Ergebnis von dir bin ich bisher auch gekommen, nur benötige ich nur die Produkte bei denen custom field 10 = G UND custom field 11 = 50.
Unter den Bedingungen sollte daher prod_id 320 rausfallen...


Ach so, Dann würde ich zu INTERSECT greifen:

Code:
test=*# select prod_id from sascha where (cust_id,cust_val) = (10,'G') intersect  select prod_id from sascha where (cust_id,cust_val) = (11,'50');;
 prod_id
---------
      21
(1 row)

Andreas
 

Sascha-LW

Benutzer
Beiträge
6
Bekomm leider nur den Fehler:
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'intersect SELECT product_id FROM test at line 3
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.848
Oben