sql >> Database teknologi >  >> RDS >> Mysql

Mysql select med betinget logik

SELECT days.meta_value
FROM tableName AS from_country,
     tableName AS to_country,
     tableName AS days
WHERE from_country.item_id = to_country.item_id
  AND from_country.item_id = days.item_id
  AND from_country.field_id = 90
  AND to_country.field_id = 93
  AND days.field_id = 251

Du kan tilføje flere begrænsninger, hvis du vil filtrere efter from_country.meta_value eller lignende. Og du bør erstatte tableName med det faktiske navn på tabellen.

Tænk på from_country , to_country og days som tre forskellige pointere til rækker i din tabel, eller alternativt forskellige variabler, der tager værdier fra din relation. Du ønsker, at de alle tre skal beskrive det samme element, og du vil også have, at hver af dem refererer til det felt, der er knyttet til dets navn. Dette resulterer i ovenstående betingelser.

Du kan endda oprette en visning for at få adgang til denne dårligt designede tabel som en korrekt designet:

CREATE VIEW viewName AS
SELECT item.item_id AS item_id,
       from_country.meta_value AS from_country,
       to_country.meta_value AS to_country,
       days.meta_value AS days
FROM (SELECT DISTINCT item_id FROM tableName) AS item
     LEFT JOIN tableName AS from_country
            ON (from_country.item_id = item.item_id AND
                from_country.field_id = 90)
     LEFT JOIN tableName AS to_country
            ON (to_country.item_id = item.item_id AND
                to_country.field_id = 93)
     LEFT JOIN tableName AS days
            ON (days.item_id = item.item_id AND
                days.field_id = 251)

Dette ville skabe en visning med fire kolonner, hvorfra du blot kunne vælge:

SELECT days FROM viewName WHERE from_country LIKE 'A%'

eller hvad du nu vil vælge. Bemærk, at på grund af de venstre joinforbindelser, vil manglende værdier for nogle elementer resultere i NULL værdier. Dette er i modsætning til forespørgslen ovenfor, som vil udelade ethvert element, som ikke har alle tre værdier specificeret. Brug det, der er mere passende i din situation.




  1. multibillede upload forkert antal ved fil-upload

  2. Opgradering af Slony-I 2.0.x til seneste version 2.1.x

  3. Kan ikke få spring boot til automatisk at oprette databaseskema

  4. grundlæggende pyodbc bulk indsats