Strona 1 z 1

Dublowanie (zwielokratnianie) wyników kwerendy

: ndz gru 06, 2015 7:54 pm
autor: REXus
Mam następujący problem: potrzebuję za pomocą kwerendy z jednego wiersza tabeli zwrócić kilka wierszy kwerendy (jedno z pól tabeli podawałoby, ile kopii miałoby być w wyniku).

Skąd taka, może trochę dziwna, potrzeba: mam bazę danych zabudowanych akumulatorów, i czasami w jednej baterii pracuje kilka identycznych. Zamiast poświęcać oddzielny wiersz każdemu z nich, po prostu w jednej z komórek podana jest ich ilość (zmniejsza to ilość danych i jest wygodniejsze). Potrzebuję jednak dla każdego z nich wygenerować metrykę, w związku z tym w wyniku kwerendy, na podstawie której będzie generowany raport, wiersze miały by być dublowane (zmieniać miałby się tylko numer porządkowy, kolejny od 1 do liczby akumulatorów).

Szukałem jakiegoś rozwiązania SQL, ale niestety nic sensownego nie znalazłem (może dlatego, że poruszam się w temacie jeszcze nieco po omacku).

Ma ktoś pomysł na rozwiązanie?

Re: Dublowanie (zwielokratnianie) wyników kwerendy

: ndz gru 06, 2015 9:45 pm
autor: Jan_J
Gwoli prawdy winno być odwrotnie: każda jednostka w osobnym rekordzie, a w widoku raportu grupowanie wg typu z polem wskazującym liczbę jednostek. Projekt bazy zaczęty od końca zamiast od początku.

Proste remedium polega na dodaniu tabeli z jedną kolumną, w której będą klucze wpisów akumulatorów zwielokrotnione tyle razy ile trzeba. Jeśli więc bateria 2012 posiada 3 akumulatory, w dodatkowej tabeli 2012 musi pojawić się 3-krotnie. I bierzesz do zapytania złączenie obu tabel, czyli SELECT * FROM AKU JOIN KLUCZE USING(ID);
ID to nazwa kolumny z kluczami baterii, wspólna dla obu tabel.

Inna metoda to użycie proceduralnego SQL. Jeszcze inna to makro w kliencie bazy zamiast pojedynczego zapytania. Nie polecam.

Więcej pomysłów: google :: sql get records n times