Nie mam za wiele czasu aby poświęcić się mojemu problemowi bez reszty, ale co mi się pomyślało przed chwilą (po przeczytaniu pewnych manuali itp.)
Mam dwa zapytania do SQL:
SELECT * FROM `PRODUKCJA`
oraz
SELECT `data`, count(`data`) AS `rowspan` FROM `produkcja` GROUP BY `data`
Teraz albo mogę z tego stworzyć (tu liczę na waszą pomoc) jedno zapytanie z podzapytaniem tak aby np. na końcu wyniku była kolumna `rowspan` z ilością rekordów o takiej samej dacie. Albo może uważacie że informacje z drugiego zapytania wykorzystać do utworzenia instrukcji warunkowej, która to już zajmie się łączeniem wierszy.
Próbowałem tak:
SELECT *, (SELECT COUNT(`data`) FROM `produkcja`) AS `rowspan` FROM `produkcja` ORDER BY `data` ASC
to dodało mi na końcu tabeli kolumnę z ilością wszystkich rekordów - o coś takiego mi chodzi, ale w ostatniej kolumnie chcę mieć podaną ilość rekordów z datą taka jak data danego rekordu a nie liczbę wszystkich rekordów. Zadanie jest trudne bo podzapytanie musi zwrócić jeden wiersz. Więc kombinuję dalej tak:
SELECT *, (SELECT COUNT(`data`) FROM `produkcja` WHERE `data`='2010-10-28') AS `rowspan` FROM `produkcja` ORDER BY `data` ASC
Fajnie tylko, że teraz mam w ostatniej kolumnie same 4 (tyle mam rekordów z datą 28-10).
Czy możliwe jest uzyskanie z podzapytania liczby rekordów z datą jak data rekordu?
POMÓŻCIE
No i mam solution!
SELECT DATA, zmiana, id_operator, wyrob, cykle, p.row FROM produkcja
LEFT JOIN (SELECT DATA, COUNT(DATA) AS row FROM produkcja GROUP BY DATA) AS p
USING(DATA)
ORDER BY DATA ASC, zmiana ASC
Macie jakieś pomysł optymalizacji w/w skryptu?
Nie wiem tylko dlaczego jak podam SELECT * do dostaję na końcu dwie kolumny `row` - stąd musiałem wymienić niezbędne kolumny w zapytaniu.
Teraz tylko skrypt w PHP, który odpowiednio zinterpretuje kolumnę `row` i będą bardzo kontent.
Kolejnym krokiem będzie rowspan zależny od liczby rekordów w tą samą datą i zmianą, ale ten problem odkładam na później. Oczywiście jak go rozwiążę to podzielę się tą radosną nowiną.