MySQL A или B, но НЕ оба - PullRequest
       18

MySQL A или B, но НЕ оба

0 голосов
/ 16 сентября 2018

Это кажется простым запросом, но я не могу получить его или связать с другими постами при переполнении стека.Кто-нибудь сможет объяснить ... Это то, что я имею до сих пор, это возвращает записи для всех баров, куда ходят один или оба человека.

Частота TBL Схема - пьющий VARCHAR (50) PK, bar VARCHAR(50) PK

Бары, которые часто посещают Джон или Ребекка, но не оба из них

SELECT DISTINCT bar 
FROM frequents
WHERE drinker = 'John' XOR drinker = 'Rebecca' 
  AND bar NOT IN (
    SELECT f1.bar 
    FROM frequents f1, frequents f2
    WHERE (
      f1.drinker = 'John' 
      AND f2.drinker = 'Rebecca' 
      AND f1.bar = f2.bar
    )
  );

1 Ответ

0 голосов
/ 16 сентября 2018

Что-то вроде этого должно соответствовать спецификации:

SELECT f.bar 
  FROM frequents f
 WHERE f.drinker IN ('John','Rebecca')
 GROUP 
    BY f.bar
HAVING COUNT(DISTINCT f.drinker) < 2

  • получить все bar для 'Джона' и / или 'Ребекки'
  • свернутьстроки в одну строку для каждого bar
  • получают счетчик drinker для каждого бара
  • отбрасывают строки, имеющие количество 2 (т. е. Джон и Ребекка)
  • оставляя только значения bar для Джона, а не Ребекки и наоборот
...