sql >> Databáze >  >> RDS >> Mysql

Pokročilý dotaz Mysql pro získání hlavního záznamu, pokud se dvě podmínky shodují na různých řádcích podřízených záznamů

Ve skutečnosti, jak naznačil AsConfused, potřebujete dvě spojení s TABLE2 pomocí aliasů

-- both of these are tested :

-- find t1 where it has 2 and 7 in t2

    select t1.*
    from table1 t1
    join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
    join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7

-- find t1 where it has 2 and 7 in t2, and no others in t2

select t1.*, ovx.id
    from table1 t1
      join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
      join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7
      LEFT OUTER JOIN table2 ovx on t1.id=ovx.masterid and ovx.optionValue not in (2,7)
    WHERE ovx.id is null


  1. Hierarchie kategorií (v pořadí) pomocí PHP MySQL

  2. LOAD DATA LOCAL INFILE Problém s MySQL/PHP

  3. Jak mohu vrátit číselná data boxplotu všech výsledků pomocí 1 dotazu mySQL?

  4. Nabízí SQL Server něco jako MySQL NA AKTUALIZACI DUPLIKÁTNÍHO KLÍČE?