Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dołączenie ilości wyników z drugiej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
peku33
Witam. Posiadam 2 tabelki:
sprzedawcy (id INT, imię VARCHAR.............................)
produkty (id INT, sprzedawca_id INT, itd)

Chciałbym teraz jakimś poleceniem wyciągnąć sprzedawców, dołączając liczbę produktów jako kolejna kolumna (sprzedawcy.id == produkty.sprzedawca_id)

2. Szukam czegoś, co znajdzie najmniejszy wolny wynik z INT

to znaczy jak mam
1
2
3
4
5
6
8

to da 7
a jak będzie
1
2
3
4
5
6
7

to da 8
Mchl
Kod
SELECT s.id, s.imie, ... , p.ilosc
FROM
  sprzedawcy AS s
LEFT JOIN (
  SELECT sprzedawca_id AS id, COUNT(*) AS ilosc
  FROM
    produkty
  GROUP BY
    sprzedawca_id
) AS p
USING (id)


2. A po co Ci to? Pytam, bo najczęściel ludzie szukają czegoś takiego, żeby "łatać dziury" w kluczu głównym, czego nie należy w ogóle robić.
JohnnyB
można nieco prościej
  1. SELECT imie,count(*) AS ilosc FROM sprzedawcy LEFT JOIN produkty ON sprzedawca_id=sprzedawcy.id GROUP BY id_sprzedawcy;


2. to znajdzie dziurę w numeracji albo kolejny najwyższy numer, minimum trzeba poszukać oddzielnym zapytaniem
  1. SELECT t1.numer+1 FROM test AS t1 LEFT JOIN test AS t2 ON t1.numer+1=t2.numer WHERE isnull(t2.numer) LIMIT 1;
Mchl
Cytat(JohnnyB @ 20.04.2010, 21:11:19 ) *
można nieco prościej
  1. SELECT imie,count(*) AS ilosc FROM sprzedawcy LEFT JOIN produkty ON sprzedawca_id=sprzedawcy.id GROUP BY id_sprzedawcy;


Można, ale nie jest zgodne ze standardem i od wersji 5.1 MySQL na domyślnych ustawieniach rzuci błędem.
http://dev.mysql.com/doc/refman/5.1/en/ser...y_full_group_by
peku33
Już śmiga. ++
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-2025 Invision Power Services, Inc.