ďťż
 
Jak zbudowac zapytanie do bazy? ďťż
 
Jak zbudowac zapytanie do bazy?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Jak zbudowac zapytanie do bazy?



Przemek - 11-05-2007 12:33
Jak zbudowac zapytanie do bazy?
  Witam

tabela1:
kolumna1 kolumna2 kolumna3
1 1 1
1 2 2
1 3 2
1 4 2
1 5 2
2 1 1
2 2 1
2 3 2
2 4 2
2 5 2
1 1 2
1 2 2
1 3 2
1 4 2
1 5 2

Chce dostac:
1 1 2
1 2 2
1 3 2
1 4 2
1 5 2

Czyli:
Jezeli w kolumnie3 mamy wartosc "1" w wierszu, gdzie kolumna2 ma wartosc
"1",
to wywalamy wszystkie wartosci z kolumna 1.

SELECT *
FROM tabela1
WHERE kolumna1=1

da mi tylko:
1 1 1
2 1 1
1 1 2

Chcialbym zapytanie cos w stylu:
SELECT *
FROM tabela1
WHERE (wywal kolumna1, gdzie w kolumna2=1 jest kolumna3=1)

Ale jak to zapisac?:)

Pozdrawiam





=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 11-05-2007 12:33

  On Wed, 9 May 2007 18:40:15 +0200, "Przemek" <mystre[bez_tego]@wp.pl>
wrote:

>Czyli:
>Jezeli w kolumnie3 mamy wartosc "1" w wierszu, gdzie kolumna2 ma wartosc
>"1",
>to wywalamy wszystkie wartosci z kolumna 1.

>Ale jak to zapisac?:)

Dobrze....

A niech tam, dzień dobroci dla leni.

Select kolumna1 from tabela1 where kolumna2=1 and kolumna3=1
\
--
___________ (R)
/_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122 688
___/ /_ ___ ul. Na Szaniec 23/70 31-560 Kraków (012 378 31 98)
_______/ /_ http://trzypion.oldfield.org.pl/wieliczka/foto.html
___________/ mail: _555@irc.pl GG: 3524356




Przemek - 11-05-2007 12:33

 
Użytkownik "Adam Płaszczyca" <trzypion@oldfield.spamnie.org.pl> napisał w
wiadomości news:c65443h56pf43u4qjgp1149hlt4031t13o@4ax.com...
> On Wed, 9 May 2007 18:40:15 +0200, "Przemek" <mystre[bez_tego]@wp.pl>
> wrote:
>
>>Czyli:
>>Jezeli w kolumnie3 mamy wartosc "1" w wierszu, gdzie kolumna2 ma wartosc
>>"1",
>>to wywalamy wszystkie wartosci z kolumna 1.
>
>>Ale jak to zapisac?:)
>
> Dobrze....

Aha...

> A niech tam, dzień dobroci dla leni.
>
> Select kolumna1 from tabela1 where kolumna2=1 and kolumna3=1

Zle!

Dostane to:
kolumna1 kolumna2 kolumna3
1 1 1
2 1 1

A to nie to co chcialem...

Chce dostac:
1 1 2
1 2 2
1 3 2
1 4 2
1 5 2

Select kolumna1 from tabela1 where kolumna2=1 and kolumna3!=1
nie rozwiaze problemu bo dostane to:
1 1 2
Czyli tylko 1 wiersz, ze tego co chce dostac.

Chce wywalic:
kolumna1 kolumna2 kolumna3
1 1 1
1 2 2
1 3 2
1 4 2
1 5 2
2 1 1
2 2 1
2 3 2
2 4 2
2 5 2
bo w kolumna1 jest "1" przy pozycji kolumna2=1.

Patrz dokaldnie...
Jak w kolumnie3 jest liczba!=1 ale tylko gdy kolumna2 ma wartosc 2,
to chce zachowac wszystkie 5 wierszy kolumna1, kolumna2, kolumna3.
W przeciwnym wypadku, wywalic wszystkie te wiersze.




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 11-05-2007 12:33

  Przemek wrote:
> Witam
>
> tabela1:
> kolumna1 kolumna2 kolumna3
> 1 1 1
> 1 2 2
> 1 3 2
> 1 4 2
> 1 5 2
> 2 1 1
> 2 2 1
> 2 3 2
> 2 4 2
> 2 5 2
> 1 1 2
> 1 2 2
> 1 3 2
> 1 4 2
> 1 5 2
>
> Chce dostac:
> 1 1 2
> 1 2 2
> 1 3 2
> 1 4 2
> 1 5 2

Select * from tab
where kolumna1 = 1 and kolumna3 !=1

> Czyli:
> Jezeli w kolumnie3 mamy wartosc "1" w wierszu, gdzie kolumna2 ma wartosc
> "1",

Chodzi Ci o zdanie napisane po polsku:
Jeżeli w kolumnie3 mamy wartość '1' i kolumnie2 wartość '1'

> to wywalamy wszystkie wartosci z kolumna 1.

To co robimy? Z punktu widzenia baz danych to zdanie nie ma sensu. Żadnego!

> SELECT *
> FROM tabela1
> WHERE kolumna1=1
>
> da mi tylko:
> 1 1 1
> 2 1 1
^^^ - przecież to nie spełnia warunku we WHERE!!!
> 1 1 2
>
> Chcialbym zapytanie cos w stylu:
> SELECT *
> FROM tabela1
> WHERE (wywal kolumna1, gdzie w kolumna2=1 jest kolumna3=1)
>
> Ale jak to zapisac?:)

Nie masz problemu z zapisem warunku. Ty masz problem ze zdefiniowaniem problemu!

P.S. Masz jakiś problem X, upraszczasz go do problemu Y, po czym opisujesz go w
emailu E. Czyli masz coś takiego:

X->Y->E

Z powyższego postu wynika, że Y->E nie potrafisz zrobić, więc z dużym
prawdopodobieństwem X->Y też spaprałeś. Pewnie po kilku postach dojdziemy o co
Ci chodzi w Y, ale nie przybliży Cię to do rozwiązania problemu X, na którym Ci
zależy. :)

--
P.M.





=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 11-05-2007 12:33

  On Wed, 9 May 2007 21:24:57 +0200, "Przemek" <mystre[bez_tego]@wp.pl>
wrote:

>
>Zle!

No to się doucz sam.
--
___________ (R)
/_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122688
___/ /_ ___ ul. Na Szaniec 23/70, 31-560 Kraków, (012) 3783198
_______/ /_ http://trzypion.oldfield.org.pl/wieliczka/
___________/ GG: 3524356




=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 11-05-2007 12:33

  On Thu, 10 May 2007 03:23:35 +0200, Paweł Matejski
<madej@spam.madej.pl.eu.org> wrote:

>
>Z powyższego postu wynika, że Y->E nie potrafisz zrobić, więc z dużym
>prawdopodobieństwem X->Y też spaprałeś. Pewnie po kilku postach dojdziemy o co
>Ci chodzi w Y, ale nie przybliży Cię to do rozwiązania problemu X, na którym Ci
>zależy. :)

http://rtfm.killfile.pl
--
___________ (R)
/_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122688
___/ /_ ___ ul. Na Szaniec 23/70, 31-560 Kraków, (012) 3783198
_______/ /_ http://trzypion.oldfield.org.pl/wieliczka/
___________/ GG: 3524356




Marcin - 13-05-2007 00:18

  Przemek napisał(a):

> Chce dostac:
> ...
> 1 2 2
> ...
>
i
> Chce wywalic:
> ...
> 1 2 2
> ...

No to weź się zastanów....

Czym dla bazy wg ciebie różnią się te dwa wiersze - inaczej mówiąc: jak
chcesz jej powiedzieć, który wiersz ma wywalić, a który zostawić




Przemek - 13-05-2007 00:18

  >> SELECT *
>> FROM tabela1
>> WHERE kolumna1=1
>>
>> da mi tylko:
>> 1 1 1
>> 2 1 1
> ^^^ - przecież to nie spełnia warunku we WHERE!!!
>> 1 1 2
>>
>> Chcialbym zapytanie cos w stylu:
>> SELECT *
>> FROM tabela1
>> WHERE (wywal kolumna1, gdzie w kolumna2=1 jest kolumna3=1)
>>
>> Ale jak to zapisac?:)
>
> Nie masz problemu z zapisem warunku. Ty masz problem ze zdefiniowaniem
> problemu!
>
> P.S. Masz jakiś problem X, upraszczasz go do problemu Y, po czym opisujesz
> go w
> emailu E. Czyli masz coś takiego:
>
> X->Y->E
>
> Z powyższego postu wynika, że Y->E nie potrafisz zrobić, więc z dużym
> prawdopodobieństwem X->Y też spaprałeś. Pewnie po kilku postach dojdziemy
> o co
> Ci chodzi w Y, ale nie przybliży Cię to do rozwiązania problemu X, na
> którym Ci
> zależy. :)
>
> --
> P.M.

Napisalem co mam w tabeli,
a pod spodem, co chce z niej uzyskac.
Tak otworzysz oczy i zobaczysz, co jest w tabeli,
to zrozumiesz o co chodzi, bez opisu.
Jezeli nie chce Ci sie wnikac,
to nie trac czasu...
Przeciez nie kazalem Ci odpisywac.
Ale, jak Cie bardzo urazilem tym postem, to przepraszam.




Przemek - 13-05-2007 00:18

 
Użytkownik "Adam Płaszczyca" <trzypion@oldfield.spamnie.org.pl> napisał w
wiadomości news:sbj543thks9rpiq34ouere75o6gdd22qqn@4ax.com...
> On Wed, 9 May 2007 21:24:57 +0200, "Przemek" <mystre[bez_tego]@wp.pl>
> wrote:
>
>>
>>Zle!
>
> No to się doucz sam.
> --

Dziekuje, za konstrukrywna odpowiedz.
Udalo Ci sie zablysnac.




keczerad - 13-05-2007 00:25

  Przemek napisał(a):
>>> WHERE (wywal kolumna1, gdzie w kolumna2=1 jest kolumna3=1)

kolumna2<>1 and kolumna<>1

powinno byc dobrze chociaz nie jestem pewien czy cie rozumiem i ze
kontrukcja bazy danych jest nie do zaakcepotowania.

--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML wraz z modulem do Subiekta GT




hubert depesz lubaczewski - 14-05-2007 00:03

  On 2007-05-12, Przemek <mystre> wrote:
> Dziekuje, za konstrukrywna odpowiedz.
> Udalo Ci sie zablysnac.

przeczytaj swoje zadanie.
powoli.
zrozumiałeś je?
nie wiem - moze tak, ale z tego co widzę to wszyscy mają ten problem, że
nie rozumieją o co ci chodzi.
napisz po ludzku. nie używaj określeń "wywalić" bo nic one nie znaczą.
co znaczy "wywalić"? wywalić na ekran? wywalić z wyniku? wywalić
komputer?

podaj *sensowny* przykład danych i co chcesz uzyskać.
opisz algorytm wybrania tego co chcesz (nie pokazuj kodu sql, bo sorry,
ale to co pokazujesz tylko i wyłącznie dodatkowo zaciemnia).

i weź pod uwagę, że jeśli tyle osób pisze, że coś z twoim pytaniem jest
źle, to może faktycznie coś niezbyt jasno napisałeś?

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




Przemek - 14-05-2007 00:03

 
Użytkownik "keczerad" <keczerad@poczta.fm> napisał w wiadomości
news:f25est$527$1@mx1.internetia.pl...
> Przemek napisał(a):
>>>> WHERE (wywal kolumna1, gdzie w kolumna2=1 jest kolumna3=1)
>
> kolumna2<>1 and kolumna<>1
>
> powinno byc dobrze chociaz nie jestem pewien czy cie rozumiem i ze
> kontrukcja bazy danych jest nie do zaakcepotowania.
>
> --
>
> keczerad
>
> http://www.e-mo.com.pl
> sklep w (X)HTML wraz z modulem do Subiekta GT

Mam:
> kolumna1 kolumna2 kolumna3
> 1 1 1 <-TU
> 1 2 2
> 1 3 2
> 1 4 2
> 1 5 2
> 2 1 2 <- Tu juz ok
> 2 2 1
> 2 3 2
> 2 4 2
> 2 5 2

W kolumna1 sa dwie grupy 1 i 2, kazda po piec wpisow.
Te grupy sobie dalej rosna...3, 4, 5...
Niektore moga miec wiecej lub mniej niz 5 wpisow.
Chodzi o to, aby wyeliminowac te grupy w ktorych,
kolumna3=1, ale tylko przy kolumna2=1.
Powyzsze zapytania, albo wyswietla mi tylko 1 wiersz z grupy,
albo wywala tylko 1 wiersz.

Mysle, ze nie da sie tego zrobic bez GROUP BY
tego co jest w kolumna1.




hubert depesz lubaczewski - 14-05-2007 00:03

  On 2007-05-13, Przemek <mystre> wrote:
> Mam:
>> kolumna1 kolumna2 kolumna3
>> 1 1 1 <-TU
>> 1 2 2
>> 1 3 2
>> 1 4 2
>> 1 5 2
>> 2 1 2 <- Tu juz ok
>> 2 2 1
>> 2 3 2
>> 2 4 2
>> 2 5 2
> W kolumna1 sa dwie grupy 1 i 2, kazda po piec wpisow.
> Te grupy sobie dalej rosna...3, 4, 5...
> Niektore moga miec wiecej lub mniej niz 5 wpisow.
> Chodzi o to, aby wyeliminowac te grupy w ktorych,
> kolumna3=1, ale tylko przy kolumna2=1.
> Powyzsze zapytania, albo wyswietla mi tylko 1 wiersz z grupy,
> albo wywala tylko 1 wiersz.
> Mysle, ze nie da sie tego zrobic bez GROUP BY
> tego co jest w kolumna1.

ooo wreszcie opis który (prawie) rozumiem.
group by się nie przyda.

jeśli dobrze zrozumiałem to to zapytanie powinno załatwić sprawę:>

select * from tabelka t1 where not exists (select * tabelka t2 where
t2.kolumna2 = 1 and t2.kolumna3=1 and t2.kolumna1 = t1.kolumna1);

wymaga existsa - czyli podzapytań.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




keczerad - 14-05-2007 00:03

  hubert depesz lubaczewski napisał(a):

> select * from tabelka t1 where not exists (select * tabelka t2 where
> t2.kolumna2 = 1 and t2.kolumna3=1 and t2.kolumna1 = t1.kolumna1);
>
> wymaga existsa - czyli podzapytań.

tak na oko to mozna jeszcze uzyc left joina i sprawdzac nulla

--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML wraz z modulem do Subiekta GT




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-05-2007 00:20

  keczerad wrote:
> hubert depesz lubaczewski napisał(a):
>
>> select * from tabelka t1 where not exists (select * tabelka t2 where
>> t2.kolumna2 = 1 and t2.kolumna3=1 and t2.kolumna1 = t1.kolumna1);
>>
>> wymaga existsa - czyli podzapytań.
>
> tak na oko to mozna jeszcze uzyc left joina i sprawdzac nulla

A na moje oko wystarczy warunek:
WHERE kolumna2 != 1 OR (kolumna2 = 1 AND kolumna3 != 1)

--
P.M.




hubert depesz lubaczewski - 15-05-2007 00:08

  On 2007-05-13, Paweł Matejski <madej@spam.madej.pl.eu.org> wrote:
> A na moje oko wystarczy warunek:
> WHERE kolumna2 != 1 OR (kolumna2 = 1 AND kolumna3 != 1)

chyba nie, bo w/g mnie pytającemu chodziło o to by nie zwracać całych
"grup" (w/g kolumna1). a nie tylko pojedynczych rekordów.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 15-05-2007 00:08

  hubert depesz lubaczewski wrote:
> On 2007-05-13, Paweł Matejski <madej@spam.madej.pl.eu.org> wrote:
>> A na moje oko wystarczy warunek:
>> WHERE kolumna2 != 1 OR (kolumna2 = 1 AND kolumna3 != 1)
>
> chyba nie, bo w/g mnie pytającemu chodziło o to by nie zwracać całych
> "grup" (w/g kolumna1). a nie tylko pojedynczych rekordów.

Faktycznie. Nie będę wnikał o co chodziło koledze, ale poczuwam się do winy, że
nie zauważyłem tego efektu w Twoim zapytaniu...

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • marcelq.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com