Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> samozłączenie ?
kalu111
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2006

Ostrzeżenie: (0%)
-----


Witam,
Posiadam tabelę:
  1. id_client | id_attr


gdzie id_client to identyfikatory różnych klientów a id_attr to id okereślnych parametrów(atrybtów), czyli klient moze posiadać klika parametrów.

Problem leży w budowie zapytania, aby pobrać tych klientów, który każdy z nich ma parametry o identyfikatorach np 3 i 5.

Ten post edytował kalu111 27.08.2009, 11:12:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. SELECT id_client, id_attr FROM tabela WHERE id_attr IN (3,5) GROUP BY id_client
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A LEFT JOIN + WHERE Ci nie wystarczy...?
Go to the top of the page
+Quote Post
kalu111
post
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2006

Ostrzeżenie: (0%)
-----


Cytat(blooregard @ 27.08.2009, 12:15:21 ) *
  1. SELECT id_client, id_attr FROM tabela WHERE id_attr IN (3,5) GROUP BY id_client


To nie pomoże bo zwróci klientów, którzy mają attr 3 lub 5, a chodzi mi o to, aby każdy wybrany klient posiadał 3 i 5

Ten post edytował kalu111 27.08.2009, 11:35:00
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




grupuj po kliencie, sprawdzaj przez HAVING
Go to the top of the page
+Quote Post
kalu111
post
Post #6





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2006

Ostrzeżenie: (0%)
-----


Cytat(erix @ 27.08.2009, 12:53:00 ) *
grupuj po kliencie, sprawdzaj przez HAVING

Prówbowałem z HAVING, ale zwraca mi 0 rekordów chyba, że złe tworze zapytanie.
Jeżeli to nie problem, czy można prosić o przykładowy KOD.
W tej materii jestem trochę słaby (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(kalu111 @ 27.08.2009, 13:22:53 ) *
Jeżeli to nie problem, czy można prosić o przykładowy KOD.

Problem to nie jest ale:

Cytat(kalu111 @ 27.08.2009, 13:22:53 ) *
Prówbowałem z HAVING, ale zwraca mi 0 rekordów chyba, że złe tworze zapytanie.

pokaż więc jak próbowałeś, a my postaramy się pomóc. Tylko nie pisz teraz "aaa usunąłem bo nie działało". Wysil się i spróbuj jeszcze raz - w końcu to Twój problem, a nie nasz (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




  1. GROUP BY klient HAVING atrybut = numer1 OR atrybut = numer2

Taka końcówka powinna zadziałać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kalu111
post
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2006

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM `clients` WHERE id_attr = 28 OR id_attr = 47 GROUP BY id_client

  1. SELECT * FROM `clients` WHERE id_attr IN (28,47) GROUP BY id_client

Te zapytania zwracają wszystko

  1. SELECT * FROM `clients`GROUP BY id_client HAVING id_attr = 28 OR id_attr = 47

Zwraca 0 rekordów

  1. SELECT `t1`.* FROM `clients` AS t1, `clients` AS t2 WHERE t1.id_attr = t2.id_attr AND t1.id_attr IN (28,47) GROUP BY t1.id_client

To zwraca to samo co 2 pierwsze
Go to the top of the page
+Quote Post
6nom
post
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 5
Dołączył: 27.08.2009

Ostrzeżenie: (0%)
-----


tak na szybko:

  1. SELECT id_client, id_attr FROM tabela WHERE id_attr = 3 AND id_client IN (SELECT id_client FROM tabela WHERE id_attr = 5)


ale Tobie pewnie chodzi o dowolna liczbe atrybutow, ktore beda porownywane?
Go to the top of the page
+Quote Post
kalu111
post
Post #11





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2006

Ostrzeżenie: (0%)
-----


Cytat(6nom @ 27.08.2009, 14:32:16 ) *
ale Tobie pewnie chodzi o dowolna liczbe atrybutow, ktore beda porownywane?


Tak zgadza się, tu siedzi zonk właśnie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 08:16