Select pod warunkiem braku podobnych danych

0

Mam w MySQL strukturę tabeli:

  • EntryID (int AUTO_INCREMENT, klucz główny)
  • CurrencyAID (int)
  • CurrencyBID (int)
  • Value (float)
  • Data wstawienia danych

Celem bazy jest przedstawienie kursu waluty A w walucie B danego dnia. Problem w tym, że walut jest sporo.
Początkowo do tabeli wstawiane są kursy waluty A w dolarach (które mają ID 1). Potrzebuję teraz pobrać wszystkie wpisy w tabeli mające kurs waluta->dolar, a które nie mają danego dnia przelicznika na inną walutę. Przykładowo: (zamiast ID waluty daję jej skrót dla ułatwienia)

EntryID CurrencyA CurrencyB Data
1 PLN USD 14.08.2016
2 EUR USD 14.08.2016
3 EUR USD 14.08.2016

W takim wypadku pobrałoby mi wpis nr. 1, bo PLN ma danego dnia kurs tylko dla dolara.

W jaki sposób mogę to zrobić? Pewnie łatwe, ale nie mogę wpaść na żaden pomysł :P

0

Odpowiadam sam sobie:
Jeszcze nie sprawdziłem, ale najprawdopodobniej zadziała:

SELECT * FROM tablica t 
WHERE CurrencyB = 'USD' 
AND NOT EXISTS(SELECT 1 FROM tablica tt WHERE t.CurrencyA = tt.CurrencyA AND t.DataWpisu = tt.DataWpisu AND tt.CurrencyB != 'USD')

Jeśli zadziała, to oznaczę.

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