Błąd w zapytaniu MySQL - podpowiedz potrzebna |
Błąd w zapytaniu MySQL - podpowiedz potrzebna |
22.03.2020, 22:19:32
Post
#1
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Pomocyyyyyy
Dobry ... Pomóżcie mi proszę z tym zapytaniem: SELECT adr_NazwaPelna, adr_Id, ck_IdKhnt, ckh_Nazwa FROM adr__Ewid AS e, kh_CechaKh AS k, sl_CechaKh AS c WHERE k.ck_IdKhnt = e.adr_Id AND k.ck_IdCecha = c.ckh_Id AND adr_Id > 9 chciałbym to pogrupować po nazwie (adr_NazwaPelna) ale kiedy dopiszę do query: GROUP BY adr_NazwaPelna wywala mi błąd: "Column ..... is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause" Jak to powinno wyglądać? |
|
|
22.03.2020, 22:36:16
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A kiedy będziesz grupował, to co z kolumnami adr_Id, ck_IdKhnt, ckh_Nazwa?
-------------------- |
|
|
22.03.2020, 22:57:51
Post
#3
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Hej trublue
No na końcu. Co masz na myśli "to co z kolumnami adr_Id, ck_IdKhnt, ckh_Nazwa?" one wszystkie muszą być w klauzuli GROUP BY ? Ten post edytował phpamator 22.03.2020, 23:19:59 |
|
|
23.03.2020, 07:07:39
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Ano muszą.
Skoro tworzysz grupę na podstawie wybranego/ych pól, to te, które nie są w klauzuli GROUP BY muszą być poddane funkcjom agregującym. Jeśli są rekordy: a b c 1 x y 1 h i 1 o p to tworząc grupę na podstawie kolumny a, jak baza ma zgrupować pozostałe wartości? -------------------- |
|
|
23.03.2020, 09:23:25
Post
#5
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Hej trublue,
A mógłbyś to dla rozjaśnienia sytuacji pokazać na moim query proszę ? SELECT adr_NazwaPelna, adr_Id, ck_IdKhnt, ckh_Nazwa FROM adr__Ewid AS e, kh_CechaKh AS k, sl_CechaKh AS c WHERE k.ck_IdKhnt = e.adr_Id AND k.ck_IdCecha = c.ckh_Id AND adr_Id > 9 |
|
|
23.03.2020, 12:26:35
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Musisz pogrupować po wszystkich polach w takim przypadku.
Ale pewnie kiedy to zrobisz to stwierdzisz, że nie takiego wyniku oczekiwałeś. Problemem nie jest zapytanie, ale błąd logiczny. Grupowanie polega na łączeniu w grupy na podstawie tych samych wartości w kolumnach. Jeśli będą dwa rekordy o takiej samej wartości adr_NazwaPelna, ale różnych ck_IdKhnt, ckh_Nazwa, to nie utworzy się jeden rekord. -------------------- |
|
|
23.03.2020, 17:18:15
Post
#7
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Znaczy widzisz blad logiczny w samej konstrukcji zapytania ?
De'facto potrzebuje tylko Nazwy i przypisanych cech których moze by wiecej niz jedna pozostae pola to tylko kwestia pokazania czy sie zgadzaja id wiec mozna je pominac. Majac do dyspozycji 3 tabele w ktorych mamy: - tabela 1 -> nazwa firmy - tabela 2 -> id firmy i id cechy - tabela 3 -> id cechy oraz nazwa cechy Jak skonstruowal bys zapytanie zeby nie bylo bledu logicznego i dalo sie pogrupowac |
|
|
23.03.2020, 17:49:29
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A jak chcesz aby wyglądał wynik dla konkretnej firmy i kilku różnych cech?
-------------------- |
|
|
23.03.2020, 18:20:13
Post
#9
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
W zasadzie jak mogo by to wygladac ...
kolumna 1 nazwafirmy kolumna lista cech lub kilka wierszy ponizej z kolejnymi cechami po czym kolejna firma i jej cechy firma1 cecha1 cecha2 firma 2 cecha1 cecha2 jesli o to pytasz ... Ten post edytował phpamator 23.03.2020, 18:21:27 |
|
|
23.03.2020, 18:25:52
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Możesz użyć group_concat a wizualnie jak to sobie wyświetlisz to już inna sprawa.
http://sqlfiddle.com/#!9/88651c/1 Ten post edytował viking 24.03.2020, 07:02:26 -------------------- |
|
|
24.03.2020, 10:09:25
Post
#11
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Wielkie dzięki Vikingu!!!
Jeszcze nie miałęm czasu się temu dokładnie przyjrzeć ale jak tylko dotre do domu to siadam i patrze Serdeczne dzięki. |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 18:29 |