Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie ile jest rekordów dla danego klucza.
Forum PHP.pl > Forum > Bazy danych > MySQL
neoandrew
Witam.

Mam taki problem, nie umiem napisać zapytania, które zwróci rekordy jednej tabeli w zależności od ilości rekordów w drugiej.

Tu tabelki

klucze ->

Pole Typ Null Domyślnie
aid int(11) Nie
guid char(36) Nie
date1 datetime Tak NULL
ban int(11) Nie 0
datelast datetime Tak NULL

loginy ->

Pole Typ Null Domyślnie Łącze Komentarze MIME
aid int(11) Nie klucze -> aid
login varchar(45) Nie
pass varchar(45) Nie
runs int(11) Nie

Na tabelkach jest klucz obcy jak widać.

Całość działa tak, że najpierw jest dodawany klucz i potem dodawane są kolejne loginy (kojarzone są z kluczem) w ten sposób, że znam guid z tabeli klucze, pobieram aid dla klucza i dodaję wysłany przez użytkownika login wraz z aid danego klucza.

Teraz chciałbym zrobić funkcję (w programie co korzysta z bazy), która zwróci mi wszystkie klucze, które mają więcej niż X skojarzonych ze sobą loginów, ale właśnie nie umiem i proszę o pomoc.
Mchl
Kod
SELECT k.guid
FROM
  klucze AS k
LEFT JOIN
  loginy AS l
USING (aid)
GROUP BY
  k.guid
HAVING
  COUNT(*) > ?
neoandrew
Dziękuję bardzo, korzystam z t-sql i sql server, który nie ma USING, jednak nakierowałeś mnie dobrze, zrobiłem tak:

  1. SELECT g.aid, g.guid, g.date1, g.ban, g.datelast
  2. FROM klucze g LEFT OUTER JOIN
  3. loginy l ON g.aid = l.aid
  4. GROUP BY g.aid
  5. HAVING (COUNT(*) >= @p)


I działa, jeszcze raz dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.