zapytanie SQL

0

Cześć, napisałem takie zapytanie :

SELECT DISTINCT p.Vg
FROM ble.pomiar p
INNER JOIN
ble.typ t
INNER JOIN
ble.lampa_elektronowa le ON (t.id_typ = le.id_typ) AND (le.id_lampa = p.id_lampa)
WHERE (t.typ = TYP) AND (le.nazwa_lampy = NAZWA_LAMPY) AND (p.data_pomiaru = DATA_POMIARU) AND (p.id_pomiar = ID_POMIAR);

Generalnie działa poprawnie, ale chciałbym dodać jeszcze jeden warunek tzn chciałbym, żeby zwracało tylko te wartości, które występują więcej niż 3 razy w wyniku zapytania. (COUNT (p.VG) > 3) nie działa, group by i having z tego co wiem odpada. Da się coś takiego zrobić?

0

Tak z ciekawości:
w zapytaniu użyłeś DISTINCT oraz wyświetlasz tylko jedną kolumnę, jakim cudem jakakolwiek wartość miałaby wystąpić więcej niż 1 raz, skoro DISTINCT gwarantuje unikalność rekordów?

1

z tego co zrozumiałem wykonując różne próby DISTINCT działa tak jakby na końcu, nie przeszkadza w ewentualnym zliczaniu

coś takiego:

SELECT DISTINCT p.Va, Count(p.Va)
FROM ble.pomiar p
INNER JOIN
ble.typ t
INNER JOIN
ble.lampa_elektronowa le ON (t.id_typ = le.id_typ) AND (le.id_lampa = p.id_lampa)
WHERE (t.typ = '300B') AND (le.nazwa_lampy = 'org') AND (p.data_pomiaru = '2016-09-11') AND (p.id_pomiar = 3)
group by p.Va

wyświetla wszystkie wartości spełniające warunki, a obok ile razy występują w bazie, a nie ile razy zostały zwrócone przez zapytanie- stąd mój wniosek, ze DISTINCT nie przeszkadza, a ja go generalnie potrzebuję w tym zapytaniu

1

głupia sprawa, zrobiłem coś takiego:

SELECT DISTINCT p.Va, Count(p.Va)
FROM ble.pomiar p
INNER JOIN
ble.typ t
INNER JOIN
ble.lampa_elektronowa le ON (t.id_typ = le.id_typ) AND (le.id_lampa = p.id_lampa)
WHERE (t.typ = '300B') AND (le.nazwa_lampy = 'org') AND (p.data_pomiaru = '2016-09-11') AND (p.id_pomiar = 3)
group by p.Va having (count(p.Va) > 3)

... i zadziałało. Byłem przekonany, ze juz tego próbowałem i nie działało. Sory za gapiostwo

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