Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
Witam
Czy ktoś z was wie jak połączyć ze sobą 2 tabele o powiązaniach jeden do wielu. Czyli 1 rekord z pierwszej tabeli jest powiązany z kilkoma z drugiej. W pierwszej tabeli jest kilkaset wyników. Każdy musi zostać wyświetlony wraz d dodatkowymi polami. Pola nie mogą się powtarzać a dodatkowe wartości mają zostać dopisane na końcu. Jeśli w drugiej tabeli były 3 wyniki do wypisania pierwszej dodaje 3 rekordy na końcu. Druga tabela zawiera klucz obcy na podstawie którego można połączyć. Próbowałam zrobić to w ten sposób
W efekcie tego otrzymałam stringa (aaa, 2, 1, , bbbbb, ccc). A potrzebuje zmienne na których mogła bym pracować. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Praktycznie nie zmusisz MySQL'a aby wypluł Ci zmienną liczbę pól dla jednego rekordu tak by to w pełni Ci pasowało. Tak czy owak trzeba to przetwarzać w PHP do wyjściowej tablicy. Jeśli potrzebujesz działać na tych danych jeszcze w zapytaniach MySQL to prosto mówiąc nie da się tego zrobić o ile nie znasz liczby tych pól (nie jest ona stała).
Innymi słowy mysql wypluwa Ci jakąś pośrednią strukturę, którą musisz przerobić do takiej formy jakiej potrzebujesz. Opcje w PHP są dwie: 1. Użyć tego co wyżej (o ile to możliwe) czyli GROUP_CONCAT i przetwarzaniu tego. 2. Pobrać zduplikowane rekordy dla każdej wartości dodatkowego pola. Robisz zwykłego joina i sortujesz po ID głównego rekordu. Joinujesz z tą dodatkową wartością. Uzyskujesz w ten sposób tablicę: id pole dodatkowe 1 coś a 1 coś b 1 coś c 2 nic a 2 nic c .... Taką strukturę łatwo procesować w PHP - iterujesz po każdym rekordzie i tworzysz odpowiednią tablicę sprawdzając przy tym do którego rekordu to przypisać. Wynikowa tablica po takich zabiegach będzie wyglądać tak jak chciałaś - ale już po stronie PHP. Co potrzebujesz zrobić z tymi dodatkowymi danymi? Może da się to uzyskać od innej strony? |
|
|
|
Aui06 [MySQL][PHP] Wypisanie tabeli z połączeniem jeden do wielu 7.04.2014, 09:07:53
Sephirus Najlepiej będzie jesli podasz struktury tych tabel... 7.04.2014, 09:14:08
Aui06 To będzie wyglądało mniej więcej tak:
Kodtabela1 ... 7.04.2014, 09:25:29
Sephirus Nie do końca o to mi chodziło ale zagłębiając się ... 7.04.2014, 10:00:07
Aui06 Nie zupełnie o to mi chodziło. Ja to potrzebuje w ... 7.04.2014, 10:47:05
Aui06 Ok. Chyba nie do końca możemy się porozumiemy.
- ... 7.04.2014, 14:39:34 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 13:03 |