Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] zapytanie laczace 2 kolumny, zestawic wartosci kol. B dla unikatowych wartosci kol. A
Rynraf
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.10.2004
Skąd: Warszawa

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


Mam kolumny 'kol1' i 'kol2'.

Maja przykladowa zawartosc

Kod
---------------
| kol1 | kol2 |
---------------
|  A   |  x   |
|  A   |  e   |
|  A   |  d   |
|  B   |  t   |
|  B   |  m   |
|  B   |  p   |
|  B   |  k   |
|  B   |  t   |
---------------


Jak zrobic, jakie zapytane napisac, aby tak zmodyfikowac ta tabele,
np. tworzac z niej nowa, gdzie z 'kol1' otrzymane zostana rekordy unikatowe,
a w 'kolX' zostana wpisane wartosci rekordow z 'kol2' przyporzadkowane
do danej wartosci z 'kol1'.

Wynik oczekiwany:
Kod
-------------------------
| kol1 |       kolX     |
-------------------------
|  A   |  x; e; d       |
|  B   |  t; m; p; k; t |
-------------------------


Pytanie - jak tego dokonac?
Wynikiem ma być nowa tabela z danymi, albo zmodyfikowanie względnie istniejącej tabeli.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kitol
post
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


Po części się zgodzę. Trzymanie danych w formacie wartości oddzielonych separatorami w polu jest niewygodne, gdyż komplikuje operacje wykonywane na takim polu. Jednak czasami użycie funkcji GROUP_CONCAT jest bardzo przydatne do generowania raportów (tworzenia list wartości). Jako przykład mogę podać generowanie pliku CSV który ma zdefiniowaną strukturę, taką że w jednym polu jest np. lista zdjęć oddzielonych przecinkiem. Jeżeli wygenerowana tabela ma być wykorzystana do trzymania danych to się z tobą zgodzę, utrudni to późniejszą pracę z danymi. Rynraf nie przedstawił nam dlaczego potrzebuje takiego formatu danych. Równie dobrze może chcieć stworzyć tabelę tymczasową do generowania jakiegoś pliku.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(kitol @ 23.09.2008, 14:13:20 ) *
Po części się zgodzę. Trzymanie danych w formacie wartości oddzielonych separatorami w polu jest niewygodne, gdyż komplikuje operacje wykonywane na takim polu. Jednak czasami użycie funkcji GROUP_CONCAT jest bardzo przydatne do generowania raportów (tworzenia list wartości).

Zgadza się, ale to się robi dynamicznie a nie przez tworzenie dodatkowej tabeli. Teraz efekt jest taki. Masz dodatkową tabelę w beznadziejnym formacje. Musisz robić zapytania aktualizujące tę tabelę i dodatkowo zapytania czytające dane z niej wtedy kiedy Ci potrzeba. Jaki to ma sens?
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.09.2025 - 08:47