[MySQL] Zapytanie o skladnie

0

Witam,
Siedze juz nad tym drugi dzien i rece mi opadaja. Moze znajdzie sie ktos zyczliwy i wspomoze.
Mam tabele:
kol1 kol2
1 1
2 1
3 1
1 2
3 2
2 6
1 7
2 7
3 7
4 6

chcialbym, aby wyswietlilo mi wszystkie poz z kolumny 2, w ktorej wartosc kolumny 1 jest rowna 1 oraz 2. Udalo mi sie dojsc do takiego zapytania:

select kol2,count(*)>=2 from tabela where (kol1=1 or kol1=2) and group by kol2

Dzieki temu dostaje tabele, w ktorej jezeli wiersz spelnia zadane kryterium to w kolumnie count() jest 1, jezeli nie to 0.
W kodzie php moge cos takiego wykorzystac robiac warunek IF zalezny wlasnie od count(
).
Czy jest inny sposob na uzyskanie tego, bez zbednych wierszy (w tym wypadku tych, ktore dla count(*) przyjmuja 0)?


Ktos_tam nie o to mi chodzilo. Zle to sprecyzowalem. Teraz jest ok. Chodzi mi oto, aby wyswietlilo wtedy gdy jest wartosc 1 ORAZ 2, a nie 1 LUB 2.

0

select poz2 from test where poz1=1 or poz2=2;

0
lookaszpl napisał(a)

Ktos_tam nie o to mi chodzilo. Zle to sprecyzowalem. Teraz jest ok. Chodzi mi oto, aby wyswietlilo wtedy gdy jest wartosc 1 ORAZ 2, a nie 1 LUB 2.

no to or zamian na and.. chyba za bardzo przekombinowałeś, albo ja czegoś nie zrozumiałem [wstyd]

0

zauwaz, ze wynikiem mojego zapytania ma byc '1' oraz '7'. Operator AND w tym przypadku nie pomoze, poniewaz w kolumnie pierwszej - 1 oraz 2 sa w dwoch roznych wierszach, dlatego wyniku nie bedzie, bo nie bedzie trafien.
Prosze o wszelkie pomysly, bo siedze nad tym caly czas. Moze ktos ulzy moim cierpieniom :)

0

W ogole nie skumalem...

Najpierw piszesz:

chcialbym, aby wyswietlilo mi wszystkie poz z kolumny 2, w ktorej wartosc kolumny 1 jest rowna 1 oraz 2

Wartosc kolumny 1 nie moze byc jednoczesnie rowna 1 i 2... Jesli 1 lub 2 to:
select kol2 from tabela where kol1 in (1,2)

... a pozniej dajesz zapytanie, ktore w ogole robi cos innego i jeszcze zle interpretujesz...

Wyjasnij troche dokladniej i skladniej a chetnie pomoge, bo nijak nie moge dojsc o co Ci chodzi.

pozdrawiam
johny

0

Jeżeli Cie dobrze rozumie, to musisz zrobic cos w tym stylu:

SELECT
  kol2
FROM
  tabela 
WHERE 
  (kol1=1 OR kol2=2)
GROUP BY
  kol2
HAVING
  count(*)>=2
0

Blisko panowie.
W godzinach popoludniowych wpadlem na to. Chodzilo mi o cos takiego:

select kol2,count(1) as test from tabela where kol1=1 or kol1=2 group by kol2 having test>1.

I wtedy dostaje dokladnie to o co mi chodzilo, czyli takie kolumny kol2, gdzie w kolumnie pierwszej pojawia sie 1 oraz 2.

0

Chcialbym zauwazyc ze moje zapytanie zwraca te same wiersze, jednak bez kolumny 2, ktorej nie bylo w Twojej specyfikacji a jest w Twoim zapytaniu. Precyzuj dokladniej swoje problemy.

0

@spc
Dziekuje Ci bardzo. Wybacz,ze nie sprecyzowalem dokladnie. Moja czy twoja skladnia jest poprawna. A nawet bardziej sklanialbym sie ku twojej, bo moge ja wykorzystac do dalszej obrobki (wykorzystac jako podzapytanie). Jeszcze raz dzieki za poswiecony czas.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1