Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Unikalne wartości i GROUP
Forum PHP.pl > Forum > Bazy danych > MySQL
TomASS
Witam smile.gif

Mam dwie tabele.
Pierwsza to transporty , a druga to tabela operacje zawierająca operacje robione na poszczególnych transportach. Pole ID_transport w tabeli operacje przyporządkowuje konkretna operacje do danego transportu. Do jednego transportu może być wiele operacji, nawet takich samych

Teraz chce uzyskać coś takiego:
Ile w poszczególnych dniach zostało złożonych unikalnych zamówień na transport smile.gif

Każde zamówienie może mieć kilka operacji "Zamowienie" pierwsze określa kiedy wpadało do systemu - ile jakiego dnia zamówień wpadło do systemu

Do czego doszedłem:
LEFT JOIN
  1. SELECT * FROM np_operacje AS O LEFT JOIN np_transporty AS T ON (T.ID=O.ID_transport) WHERE O.Operacja='Zamowienie' ORDER BY ID_transport;


No tak, ale teraz mam WSZYSTKIE operacje zamówień przypisanych do jednego transportu. Jak teraz wybrać te najwcześniejsze i zsumować dniami wszystkie? Każdy transport ma przynajmniej jedną operację "Zamowienie" :/

Baza danych:
  1. CREATE TABLE `np_transporty` (
  2. `ID` int(11) NOT NULL AUTO_INCREMENT,
  3. `Nr` bigint(52) DEFAULT NULL,
  4. ) ;
  5. INSERT INTO `np_transporty` VALUES (1, 111);
  6. INSERT INTO `np_transporty` VALUES (2, 222);


  1. CREATE TABLE `np_operacje` (
  2. `ID` int(11) NOT NULL AUTO_INCREMENT,
  3. `ID_transport` int(11) DEFAULT NULL,
  4. `Operacja` varchar(30) DEFAULT NULL,
  5. `Datetime` datetime DEFAULT NULL,
  6. UNIQUE KEY `ID` (`ID`)
  7. ) ;
  8.  
  9. INSERT INTO `np_operacje` VALUES (1, 1, 'Zamowienie', '2007-04-20 17:21:42');
  10. INSERT INTO `np_operacje` VALUES (2, 1, 'Zamowienie', '2007-04-11 17:21:52');
  11. INSERT INTO `np_operacje` VALUES (3, 2, 'Zamowienie', '2007-04-20 17:22:33');
  12. INSERT INTO `np_operacje` VALUES (4, 2, 'Potwierdzenie', '2007-04-21 17:22:38');


I teraz chce uzyskać:
2007-04-11 1 transport
2007-04-20 1 transport

Jakby doszedł trzeci transport (ID=3) i operacja "Zamowienie" o czasie np. 2007-04-11 21:22:32, to bym chciał:
2007-04-11 2 transporty
2007-04-20 1 transport
a jeżeli miałby czas 2007-04-12 23:44:12
2007-04-11 1 transport
2007-04-12 1 transport
2007-04-20 1 transport

czyli tutaj ilość transportów w tabeli np_transporty musi sie równać sumie transportów z zapytania.
Tomek
Sedziwoj
Poplątana ta wypowiedź... nie wiem czy dobrze zrozumiałem, może to będzie rozwiązaniem:
  1. SELECT `id`, `id_transport`, DATE(`datetime`) AS `data` FROM `np_operacje` WHERE `operacja` = 'Zamowienie' GROUP BY `data`;
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.