Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Nietypowe zapytanie
Forum PHP.pl > Forum > Przedszkole
evolucja
Tabela
contacts
id|date|type|clientId

Chciałbym pobrać maksymalnie 10 ostatnich kontaktów(sortując po dacie) ale maksymalnie po 1/clientId. Da się to zrobić w jednym zapytaniu?

@EDIT
okej, GROUP BY.

@EDIT2
Albo jeszcze mam problem.. Obecnie zapytanie wygląda tak:
Cytat
SELECT * FROM `contacts`

LEFT JOIN `clients` ON `clients`.clientId = `contacts`.contactClientId

WHERE `contactGroup` = 1 AND `contacts`.contactNextContactDate < 1332886249

GROUP BY `contactClientId`

ORDER BY `contacts`.contactNextContactDate ASC

I owszem, pobiera po 1 rekordzie na jednego klienta i sortuje według daty, ale rekord ten nie jest pobierany jako ostatni dla klienta. To znaczy jeśli w tabeli jest 10 kontaktów dla 1 klienta zapytanie powinno pobrać ten z najwyższym ID a nie z najniższym. Ktoś pomoże?
Kostek.88
A może jak wybierasz SELECTem dane, to daj po prostu MAX?

Przykład:

  1. SELECT contacts.id, contacts.costam, MAX(contacts.maks) AS maks, clients.* FROM `contacts`


EDIT, w zasadzie to chyba miałem na myśli dać ten MAX przy ID tongue.gif

  1. SELECT MAX(contacts.id) as id,
evolucja
Niestety nie działa tak jak powinno. Testowe zapytanie:
  1. SELECT max(`contactId`), contacts.`contactId` FROM `contacts` WHERE 1 GROUP BY `contactClientId` LIMIT 0, 30 ;

daje taki efekt:
Kod
max(`contactId`)     contactId
14     14
18     7
17     1
10     3
13     11
19     16
15     15


@EDIT
Ostateczne działające zapytanie:
Kod
        SELECT * FROM
        (SELECT * FROM `contacts` ORDER BY `contactId` DESC) `contacts`
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.