[MySQL][PHP]Wyciąganie danych z dwóch tabel + języki |
[MySQL][PHP]Wyciąganie danych z dwóch tabel + języki |
21.11.2012, 10:11:32
Post
#1
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Witam
Nie wiem do końca jak zadać pytanie... więc zacznę od kodu.
Jakie rozwiązania polecicie by po zapytaniu (zapytaniach?) uzyskać taką tablice:
Zdaje sobie sprawę, że jest to trochę nie zrozumiałem... w razie wypadku odpowiem na każde pytanie. Pozdrawiam Chmura B. |
|
|
21.11.2012, 10:18:32
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Tworzysz jedno zapytanie gdzie po FROM jest tabela pierwsza a w LEFT JOIN tabela druga.
W wyniku otrzymasz rekordy, które będą się powtarzały a to dlatego że dla jednej wartosci z tabela 1 będzie odpowiadać kilka z tabeli 2. Teraz tylko w php musisz pogrupować te dane. Tutaj pisałem jak grupować i jak tworzyć zapytanie. Było to do innych celów, ale ufam, że potrafisz tę prostą rzecz sam dostosować pod siebie mając już inny kod. http://nospor.pl/grupowanie-wynikow.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 11:48:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Hmm skoro nie można tego zrobić zapytaniem SQL to wymodziłem coś takiego:
Nie podoba mi się tylko to, że gdybym oprócz "name" miał tez inne kolumny czynność musiał bym x razy powtórzyć. Może jakiś pomysł jak to zautomatyzować? |
|
|
21.11.2012, 12:29:37
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Chyba trochę przekombinowałeś...
Czemu nie skorzystałeś z tego jak ja to robiłem? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 13:25:23
Post
#5
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Umiem sobie poradzić z Twoim kodem, jest w porządku.
Teraz kombinuje jak to zautomatyzować żebym nie musiał podawać jakie pole chce połączyć (zawsze będzie to pole które występuje kilka razy i ma inną wartość. Dla przykład: żeby z takiej tablicy:
Zrobić taką:
|
|
|
21.11.2012, 13:29:56
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Cytat Umiem sobie poradzić z Twoim kodem, jest w porządku. Twoje kombinowanie "lekko" się różni od mojego kodu stąd pytam Ja przykładowo nie tworzyłem żadnych zmiennych pomocniczych, które prócz zaciemniania niczemu nie służa Co do problemu: utwórz sobie tablicę z nazwami które chcesz grupować i iteruj po tej tablicy wewnątrz pętli -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 13:38:03
Post
#7
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Kod chciałbym wykorzystać również w przyszłości w innych projektach. Tworzenie tablicy z nazwami które chce grupować wiąże się z powtórną ingerencją jeśli te pola miałby się zmienić. Trochę nie potrzebnie gdy wiem, że mają to być pola które będą się od siebie różnić id_lang i posiadać ten sam id_parent.
Chyba właśnie przyszło mi coś do głowy. Ps. chciałem też zrobić to bez wykorzystania pętli w pętli. |
|
|
21.11.2012, 13:40:42
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Cytat Ps. chciałem też zrobić to bez wykorzystania pętli w pętli. A ja chciałbym latać nie mając skrzydeł Tu dodatkowa pętla nic nie psuje, wręcz jest wymagany jeśli nie chcesz powtarzać kodu Od biedy możesz napisać funkcję która robi to co chcesz i ją wywoływać z róznymi parametrami będącymi nazwami po których chcesz grupować -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 14:21:55
Post
#9
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Coś takiego robi w przybliżeniu to co bym chciał. Różnica polega na tym, że każdą kolumnę powiela o ilość id_lang. Nawet te które nie różnią się wartościami. W przybliżeniu dostaję wynik:
EDIT: Oczywiście w zamierzeniu chciałbym, żeby kolumny z taką samą wartością nie były tablicą a od razu wartością. [id_lang] i [name] miałby zostać tak jak są. Nie wiem jak sprawdzić czy poprzedni jest inny czy ma takie same wartości i w takim wypadku zostawić go w spokoju. Ten post edytował b_chmura 21.11.2012, 14:25:22 |
|
|
21.11.2012, 14:26:19
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Czyli że powielanie wszystkiego jak leci jest niby lepsze od zapisanie tego co ma powielać w tabeli?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 14:31:34
Post
#11
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Nieee oczywiście, że nie. Teraz chciałbym dodać jakiś warunek który będzie sprawdzał czy dana kolumna ma kilka wartości czy jedną. Gdy tylko jedną - nie robić tablicy.
Sęk w tym, że nie wiem jaki warunek... |
|
|
21.11.2012, 14:35:26
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
A czemu poprostu nie użyjesz dodatkowej tablicy która będzie zawierać które kolumny masz grupować?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 14:42:28
Post
#13
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Funkcje chciałbym użyć w wielu modułach, w systemie wielu języków.
Chciałbym za pomocą jednej funkcji dostać tablicę z wynikami z bazy bez wiedzy czy i ile kolumn ma wartości w różnych językach. Po prostu gdy taka istnieje zamiast wartości pojawia się tablica z wartościami z kluczami jako id języka który reprezentuje. Jeśli ktoś nie rozumie tego co napisałem postaram się to szerzej opisać po pracy. |
|
|
21.11.2012, 14:46:09
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Ja rozumiem co napisałeś, nie rozumiem jednak czemu upierasz się na zrobieniu tego super uniwersalnie, bez podawania parametrów co chcesz grupować.
Zaś wracając do Twojego ogólnego problemu, to przecież przed włożeniem wartości do tablicy jesteś w stanie stwierdzić czy taki element juz w tej tablicy jest czy go nie ma. Jak nie ma to wkładasz , jak jest to nie. W ten sposób gdy wszystkie elementy się będą powtarzać to otrzymasz tablicę z jednym elementem na wyjściu, a to juz możesz bez problemu zamienić na wartość zamiast tablicy -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.11.2012, 15:38:10
Post
#15
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) |
Cytat Ja rozumiem co napisałeś, nie rozumiem jednak czemu upierasz się na zrobieniu tego super uniwersalnie, bez podawania parametrów co chcesz grupować. Bo ja wiem, po prostu chciałbym. Mogłoby to znacząco przyśpieszyć tworzenie następnych mniejszych lub większych modułów. No nic. W domu może jeszcze coś pokombinuję. Dzięki za pomoc ;-) Ten post edytował b_chmura 21.11.2012, 15:38:35 |
|
|
21.11.2012, 15:40:12
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Cytat Mogłoby to znacząco przyśpieszyć tworzenie następnych mniejszych lub większych modułów. A w jaki sposób wywołanie metodygetData() zamiast getData(array('lang','name')) Ma przyspieszyć coś? Moim zdaniem w pewnym momencie możesz się przejechać na tym uniwersaliźmie Cytat W domu może jeszcze coś pokombinuję. Jeśli się nadal przy swoim upierasz to napisałem ci jak masz to rozwiązać. Tu nie ma nic do kombinowania. Proste rozwiązanie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 6.06.2024 - 16:04 |