Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Mehrere Spalten in Abfrage vergleichen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Sascha-LW, 31 Juli 2013.

  1. Sascha-LW

    Sascha-LW Benutzer

    Hallo, ich hoffe ihr könnt mir helfen.
    Ich habe eine Tabelle die ungefähr so aussieht:
    [​IMG]

    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?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    So ganz versteh ich Dein problem nicht. Kannst Du anhand Deiner Daten zeigen, was rauskommen soll?

    Und wenn es geht keine Bilder, sondern verwende einfach Code-Tags wie hier üblich.
     
  3. Sascha-LW

    Sascha-LW Benutzer

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

    akretschmer Datenbank-Guru

    Die Lösung ist ein JOIN.

    Andreas
     
  5. Sascha-LW

    Sascha-LW Benutzer

    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?
     
  6. Sascha-LW

    Sascha-LW Benutzer

    Hey, hab es versucht nun mit nem JOIN zu machen. Bin aber leider auf keine Lösung gekommen, könnte mir jemand weiterhelfen?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
  8. Sascha-LW

    Sascha-LW Benutzer

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

    akretschmer Datenbank-Guru


    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
     
  10. Sascha-LW

    Sascha-LW Benutzer

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

    akretschmer Datenbank-Guru

    Ah ja, mal wieder etwas, was MySQL nicht kann. http://stackoverflow.com/questions/2300322/intersect-in-mysql als Notbehelf, besser: Umstieg auf eine richtige DB.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden