![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Założmy, że mam taką tabelę,która nazywa się produkty: id |owoc |kraj |ilosc 1 banan BRA 2 2 banan KOL 3 3 gruszka POL 5 4 wiśnia RUS 4 5 kiwi AUS 3 6 arbuz POL 2 7 jabłko SLO 5 8 jabłko UKR 4 itd.... Chodzi mi jak powinno wyglądać zapytanie by otrzymać tylko te wyniki, które się nie powtarzają po kolumnie owoc czyli tylko te: id |owoc |kraj |ilosc 3 gruszka POL 5 4 wiśnia RUS 4 5 kiwi AUS 3 6 arbuz POL 2 Tylko te owoce, które występują raz w tej tabeli. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
a nie, sorry, źle przeczytałem (IMG:style_emoticons/default/tongue.gif) Ten post edytował Damonsson 12.12.2012, 21:44:39 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie nie choddzi o group by, ani o distinct (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok, na teście działa, musze teraz to sprawdzić na prawdziwej bazie danych (IMG:style_emoticons/default/smile.gif)
Ale pewnie będzie ok dzieki. Niestety na prawdziwej tabeli nie chce to mi zadziałać. Mam takie zapytanie:
Przy takim zapytaniu otrzymuje komunikat: Warning: odbc_exec() [function.odbc-exec]: SQL error: [IBM][Sterownik ODBC iSeries Access][DB2 UDB]SQL0122 - Niepoprawna kolumna UPPLNR lub wyra�enie na li�cie SELECT., SQL state S1000 in SQLExecDirect in D:\www\apache\htdocs\zest_magpoj.php on line 213 S1000 linia 213 to $result = odbc_exec($connect, $query) or die( odbc_error()); Ma ktoś jakieś rozwiązanie? Ten post edytował dopal 13.12.2012, 13:05:57 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
eh wuja,
skoro korzystasz a Accessa to dlaczego pytasz o mysql.... (IMG:style_emoticons/default/questionmark.gif) ? ja juz nawet nie pamietam czy to jest dostepne w ms access... on ma (miał) ograniczoną implementację sql'a j. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
eh wuja, skoro korzystasz a Accessa to dlaczego pytasz o mysql.... (IMG:style_emoticons/default/questionmark.gif) ? ja juz nawet nie pamietam czy to jest dostepne w ms access... on ma (miał) ograniczoną implementację sql'a j. A jesteś pewien że to o Accessa chodzi? Bo to jest baza IBM, tak jak w komunikacie. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Popraw warunki. Pomieszane ANDy i ORy.
A zapytanie powinno wygladac tak:
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Owszem błędu już nie ma, ale wyniki wyświetlają się jak przy takim zapytaniu:
Otrzymują i w jednym i drugim po 3 wyniki, a po grupowaniu przez UPDNNR itd. powinienem otrzymać 1 wynik. Ok, Twoja odpowiedź dała mi pewną wskazówkę. Zapytanie działa, muszę teraz tylko zwerfikowac poprawność wyników. Ten post edytował dopal 13.12.2012, 13:52:52 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
ok, moja nieuwaga.
bylem pewny ze to nie jest mysql - a Ty tak to opisales. gdybys napisal to czytelniej - latwiej by bylo odpowiedziec na pytania. j. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam takie zapytanie, które dobrze mi działa, ale chciałbym je rozbudować.
Chciałbym by najpierw grupowanie odbyło się po : GROUP BY UPDNNR HAVING COUNT(UPDNNR) = 1 a na końcu by było grupowanie GROUP BY MAPJP1 Zapewne to zapytanie powinno zupełnie inaczej wyglądać, ale może ktoś ma jakąś podpowiedź jak by to było. Walcze z tym już drugi dzień, może ktoś ma jakieś wskazówki. Ten post edytował dopal 15.12.2012, 16:25:11 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Tak próbowałeś? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie jest do końca tak jak oczekuję, podobnie robiłem.
Owszem zapytanie zwraca mi prawidłowy wynik, czyli akurat w tym przypadku 9, ale wyświetla wszystkie jako oddzielne rekordy. A chodzi by po wybraniu UPDNNR HAVING COUNT(UPDNNR) = 1 Wybrał te brekordy, które wystepują raz ( tak jak mi wcześniej mówiłeś ) Następnie chcę by te wyniki wybrane podrupował wg pola MAPJP1, czyli UPDNNR HAVING COUNT(UPDNNR) = 1 zwraca mi 9 wyników, w tych 9 wynikach w polu MAPJP1 mają np wpisane: 186 198 173 186 198 198 173 180 186 W tym momęcie GROUP BY MAPJP1 powinno pogrupować te 9 rekordów wg tego pola i otrzymać wyniki: 186 - 3 ( jako cyfrę ) 198 - 3 173 - 2 180 - 1 Mam nadzieję, że teraz to jest czytelniejsze (IMG:style_emoticons/default/smile.gif) Masz jakis pomysł? Dla jasności podam dalszą część kodu, która tyczy się tego zapytania
Ten post edytował dopal 15.12.2012, 17:13:58 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie z zapytania. Podwójne grupowanie.
SELECT ... FROM (SELECT ... FROM ... GROUP ... HAVING ...) x GROUP BY .... |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 9.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie z zapytania. Podwójne grupowanie. SELECT ... FROM (SELECT ... FROM ... GROUP ... HAVING ...) x GROUP BY .... Nie bardzo rozumiem po FROM nie ma podanej tabeli? Co znaczy x? Coś takiego?
Zrobiłem tak i działa.
Ewentualnie jeśli, ktoś ma inny pomysł to będę wdzięczny. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
X to alias do podzapytania. Alias może być do tabeli (FROM tabela1 As X), pola (SELECT bardzodluganazwapola As X), kolumny wyliczanej (SELECT DateDiff(data_od, data_do) As X, podzapytania (jak we wcześniejszym przykładzie) itp.
A nie ma tabeli, bo źródłem danych jest wcześniej wyliczony zbiór rekordów (czyli coś takiego samego jak "wirtualna" tabela) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 20:21 |