![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Mam problem jak napisać zapytanie.
Mam: tabelę utwory (id, nazwa) tabelę utwor_instrument (id, utwor_id, instrument_id) tabelę instrumenty (id, nazwa) W 1 zapytaniu chciałbym pobrać listę wszystkich utworów wraz z instrumentami. Jak mam takie zapytanie skonstruować? Zapewne jako śJOIN użyć ale nie mam pomysłu jak. Ten post edytował robos85 25.11.2009, 17:21:39 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zapewne jako śJOIN użyć ale nie mam pomysłu jak. Masz rację, JOIN. Jaki? Zapewne LEFT JOIN (o ile może być utwór bez instrumentu). Jeżeli masz problem z napisaniem takiego zapytania (a jest to naprawdę prosty JOIN) to poczytaj manual MySQL. Znajdziesz tam przykłady, dzięki którym sklecisz coś własnego. W razie problemów pytaj (podając swoje dotychczasowe rozwiązanie). |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
![]() Pobierze wszystkie nazwy utworów i instrumentów powiązane z tabelą utwor_instrument -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
tylko, że 1 utwór może mieć np 15 instrumentów i tu mam problem. Chciałbym w polu instrumenty (dla każdego utworu) mieć jakoś listę tych instrumentów. Jeżeli utwór miałby mieć tylko 1 utwór to nie mam z tym problemu. Problemem jest ta cała lista jakoś w JOIN
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Polecam użycie w jednym zapytaniu: LEFT JOIN, GROUP BY, group_concat
![]() EDIT: w zalezności czy chcesz mieć id instrumentu czy jego nazwę to po prostu jest jedno mniej lub więcej left join i wsio ![]() Ten post edytował thek 25.11.2009, 14:00:40 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Ale to zapytanie nie podaje mi wszystkich instrumentów tylko 1 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat W 1 zapytaniu chciałbym pobrać listę wszystkich utworów wraz z instrumentami. Jak wszystkich, to wszystkich:
![]() -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Wszystkich w sensie - wszystkich przydzielonych w danym utworze.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Chłopak... swd się rypnął w drugim z join... Łączył joinem dwa razy tabelę I zamiast UI
![]() ![]() EDIT... Tu jest błąd ![]() Ma dwa i zamiast jedno ui a drugie i. A ma być
EDIT2: Poza tym jego zapytanie jest właśnie tym o czym mówiłeś. A co ja wspomniałem z swd ponad 20 minut temu tylko nie zauważyłeś tej małej literówki. EDIT 3 ( ![]() ![]() ![]() ![]() Ten post edytował thek 25.11.2009, 14:36:53 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
thek-> dzinx, cos takiego chyba powinno dzialac:) nie mam czasu sprawdzic bo szef biega po biurze;)
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Tamtą literówkę zauważyłem i sam poprawiłem;)
Mam więc takie zapytanie:
printowanie `i`.`instrument` daje mi tylko 1 wynik (a powinno być kilka) czyli tak jak pisałem:/ |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To ja się pytam... Gdzie zgubiłeś group_concat? Bo ja go w Twoim zapytaniu nie widzę.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widzę działa tak jak chciałem. Do dziś nie słyszałem o funkcji GROUP_CONCAT ![]() Dzięki za pomoc:) EDIT: Odświeżam, żeby zapytać jeszcze o kolejną rzecz. Tamto zapytanie było OK, dodałem do niego podobna formułę dla 2giej tabeli - nastrój. Zapytanie wygląda teraz tak:
I w wynikach jest teraz pomieszane. Wszystkie instrumenty i wpisy są pokazywane po kilka razy:/ Ten post edytował robos85 25.11.2009, 16:20:53 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Dzieje się tak, ponieważ masz grupowanie po instrumencie, a Ty próbujesz jeszcze po nastroju, który nie jest grupowany i stąd masz zamieszanie. Group concat zaś działa tylko na elementy zgrupowane.
Ten post edytował thek 26.11.2009, 11:41:12 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
wewnątrz group_concat dałem distinct w obydwu przypadkach. Załatwiło sprawę.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:46 |