Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dołączenie ilości wyników z drugiej tabeli
peku33
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
JohnnyB
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
Mchl
post
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


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

Ten post edytował Mchl 20.04.2010, 20:27:05
Go to the top of the page
+Quote Post
peku33
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

Ostrzeżenie: (0%)
-----


Już śmiga. ++

Ten post edytował peku33 22.04.2010, 12:54:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 03:17