![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
witam
jak pobrac dane z 2 pol, ale tak zeby w wyniku otrzymac dane unikalne ? wyjasnie na przykladzie o co mi chodzi: tabela ma pola (miedzy innymi): waluta_kupna, waluta_sprzedazy. wartosciami kazdego z nich sa np. pln, eur, usd itd. i teraz mam nastepujacy przypadek wartosci rekordow: waluta_kupna, waluta_sprzedazy eur, pln eur, usd pln, pln pln, chf eur, eur w wyniku zapytania chcialbym otrzymac spis wszystkich walut, czyli eur, usd, pln, chf. jak powinno wygladac zapytanie ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
SELECT DISTINCT......
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
SELECT DISTINCT...... kombinowalem i z distinct i z group by i za wiele mi z tego nie wyszlo, wiec jesli mozna to poprosze bardziej konkretnie dla przykladu cos takiego
zwraca mi unikalne pary danych w stylu eur, pln eur, usd |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Paradoksalnie w tym konkretnym przykładzie DISTINCT można pominąć, gdyż jest on dokładany automatycznie gdy użyty zostanie UNION
więc
pokaże te same wyniki ![]() to taka złośliwość mysql |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Paradoksalnie w tym konkretnym przykładzie DISTINCT można pominąć, gdyż jest on dokładany automatycznie gdy użyty zostanie UNION więc
pokaże te same wyniki ![]() to taka złośliwość mysql sprawdzilem, zgadza sie ![]() Cytat(sazian) ale kombinacja
to zapytanie daje inne wyniki, bez podzapytan sie chyba nie da, bo tu jest potrzebny jakby iloczyn logiczny wynikow z 2 pol w 1 tabeli Ten post edytował veyron 5.09.2012, 08:19:08 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 56 Dołączył: 3.06.2010 Skąd: Tarnowskie Góry Ostrzeżenie: (0%) ![]() ![]() |
ale kombinacja ![]() Powiedziałbym, że prawidłowe rozwiązanie problemu. -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
hehehe
idąc dalej wcześniejszym tropem: skoro distinct jest dokładany automatycznie, to dlaczego nienapisać po prostu:
I tym sposobem w sposób prosty i przejrzysty otrzymamy właściwe wyniki |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
hehehe idąc dalej wcześniejszym tropem: skoro distinct jest dokładany automatycznie, to dlaczego nienapisać po prostu:
I tym sposobem w sposób prosty i przejrzysty otrzymamy właściwe wyniki no chyba jednak sa inne wyniki, w tym przypadku wynikiem jest iloczyn logiczny, czyli pokazywane sa tylko te, ktore sa zarowno w polu waluta_kupna jak i waluta_sprzedaz natomiast w zapytaniu w postach powyzej wynikiem jest suma, czyli te ktore sa w waluta_kupna oraz te ktore sa w waluta_sprzedaz dla przykladu dla danych: waluta_kupna, waluta_sprzedazy eur, pln eur, usd pln, eur wynikiem zapytania w cytacie jest eur, pln a wynikiem zapytania z wczesniejszego postu jest eur, pln, usd |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
dobrze, że dyskutujesz, bo musiałbym kłucić się dalej sam, ze sobą
![]()
Wynik: pln, usd,eur czyli taki sam jak w poprzednich zapytaniach ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 2.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
dobrze, że dyskutujesz, bo musiałbym kłucić się dalej sam, ze sobą ![]()
Wynik: pln, usd,eur czyli taki sam jak w poprzednich zapytaniach ![]() no dobra masz racje, ale w takim razie jest dziwna rzecz, bo testowalem to na troche innej tabeli, ktora ma jeszcze inne pola niz waluta_kupna i waluta_sprzedazy i troche wiecej danych, testowalem to w phpmyadmin w zakladce sql i tam w wyniku tego zapytania dostawalem tylko eur i pln (a powinno byc eur,pln,czk), ale jak to teraz przetestowalem po prostu przez php to w wyniku dostaje eur, pln, i czk. powodem jest chyba to, ze phpmyadmin dodaje automatycznie do zapytania LIMIT 0,30 i w przypadku tego zapytania nie wyswietla wszystkich wynikow i w dodatku nie dzieli tez na podstrony, natomiast w przypadku zapytania w twoim pierwszym poscie wszystko wyswietlal ok. swoja droga to pokazuje, zeby lepiej testowac przez skrypt ph, a nie phpmyadmin. gdybys chcial to sobie przetestowac to ponizej umieszczam dane, zaimportuj do czystej tabeli i zobacz roznice w tych zapytaniach:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 04:04 |