Zapytanie MYSQL - wyciągnięcie rekordów, których "dzieci" spełniają warunki

0

Mam bazę, która wygląda w uproszczeniu następujący sposób:
tabela A:
IDa

tabela B:

IDb
a

tabela C:

IDc
a
b

Chodzi mi o wyciągnięcie tych danych z tabeli B, które spełniają następujące warunki (x - zadana wartosc):

  • B.a=x
  • jeśli istnieje chociaż jeden rekord taki w tabeli C, który spełnia warunek C.a=x, to do wyniku dodać rekord z tabeli B spełniający warunek IDb=C.b

na rozwiązanie problemu wpadłem podczas pisania postu, także od razu zamieszczę rozwiązanie (może komuś się przyda):

  SELECT DISTINCT
  C.b AS IDb,
  B.a AS a
  FROM
    (
      C
          LEFT OUTER JOIN
      (
        B
            LEFT OUTER JOIN
        A
        ON
            B.a=A.IDa
      )
      ON C.b=B.IDb
    )
      LEFT OUTER JOIN
    A as xA
    ON C.a=xA.IDa
    WHERE
      B.a=x
      OR C.a=x

mogłem coś namieszać, bo zmieniałem oryginalne zapytanie

0

ładniej, choć nie wiem, czy wydajniej, będzie to wyglądać z podzapytaniem i warunkiem exists

1 użytkowników online, w tym zalogowanych: 0, gości: 1