Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] problem z selectem
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


Mam następujący problem:

Są sobie tabele:
monitor
(id_monitora, nazwa)
kategorie
(id_kategorii, nazwa)
parametry
(id_parametru, id_kategorii, parametr)
parametry_monitora
(id_parametru_monitora, id_monitora, id_parametru)

Wewnątrz tabel są wpisane monitory oraz ich parametry techniczne.
W przypadku kiedy chcę wyświetlić monitory których parametr ma jakieś ID np 53 to nie ma problemu - wyświetlają się. Natomiast jeśli chcę wyświetlić monitory, które mają parametry o ID np 52 i 53 za pomocą takiego zapytania:
  1. <?php
  2. SELECT nazwa FROM monitor, parametry, parametry_monitora WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru = parametry.id_parametru AND parametry_monitora.id_parametru IN (52, 53) ORDER BY nazwa ASC
  3. ?>


to wyświetlają się monitory, które mają parametr 52 oraz te które mają parametr 53 a ja chcę mieć tylko takie które mają obydwa parametry czyli 52 i 53.

Wpadłem na pomysł żeby dać:

  1. <?php
  2. SELECT nazwa FROM monitor, parametry, parametry_monitora WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru = parametry.id_parametru AND parametry_monitora.id_parametru = 52 AND parametry_monitora.id_parametru = 53 ORDER BY nazwa ASC
  3. ?>


ale nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

jak to ugryźć ?
Go to the top of the page
+Quote Post
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. SELECT id_monitora.nazwa FROM monitor, parametry, parametry_monitora WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru = parametry.id_parametru AND (parametry_monitora.id_parametru=52 OR parametry_monitora.id_parametru=53) GROUP BY parametry_monitora.id_monitora ORDER BY id_monitora.nazwa


Ten post edytował Hazel 12.03.2009, 16:16:15
Go to the top of the page
+Quote Post
slawek3422
post
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


Niestety nie zadziałało.
Może nakreślę jaśniej o co mi chodzi.
Powiedzmy, że jest monitor X który posiada parametr o ID 52, jest monitor Y który posiada parametr o ID 53 i jest monitor Z który posiada parametr o ID 52 i 53.

Zapytanie, które zaproponowałeś wyświetli wszystkie trzy monitory a ja chcę żeby był tylko ten, który ma obydwa parametry

Ten post edytował slawek3422 12.03.2009, 16:44:46
Go to the top of the page
+Quote Post
Hazel
post
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. SELECT id_monitora.nazwa FROM monitor, parametry, parametry_monitora WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru = parametry.id_parametru GROUP BY parametry_monitora.id_monitora HAVING parametry_monitora.id_parametru=52 AND parametry_monitora.id_parametru=53 ORDER BY id_monitora.nazwa



No to chyba powinno działać.

Ten post edytował Hazel 12.03.2009, 16:53:21
Go to the top of the page
+Quote Post
adasiu
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


Cytat(slawek3422 @ 12.03.2009, 16:00:35 ) *
Wpadłem na pomysł żeby dać:

  1. <?php
  2. SELECT nazwa FROM monitor, parametry, parametry_monitora WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru = parametry.id_parametru AND parametry_monitora.id_parametru = 52 AND parametry_monitora.id_parametru = 53 ORDER BY nazwa ASC
  3. ?>


ale nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

jak to ugryźć ?


a nie ma być czasem
  1. SELECT
  2. nazwa
  3. FROM monitor, parametry, parametry_monitora
  4. WHERE monitor.id_monitora = parametry_monitora.id_monitora AND parametry_monitora.id_parametru_monitora = parametry.id_parametru AND parametry_monitora.id_parametru = 52 AND parametry_monitora.id_parametru = 53
  5. ORDER BY nazwa ASC
Go to the top of the page
+Quote Post
slawek3422
post
Post #6





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


niestety żadna z Waszych podpowiedzi nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) zaraz zacznę podejrzewać problem z bazą danych (źle stworzone tabele) albo z serwerem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

W ogóle nie działa nawet takie zapytanie:

  1. SELECT id_monitora
  2. FROM parametry_monitora WHERE id_parametru =52 AND id_parametru =2;


a w tej tabeli są wpisy o które pytam bo dany monitor ma wiele parametrów i na pewno istnieje taki który ma parametry o podanych przeze mnie w zapytaniu numerach ID (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował slawek3422 13.03.2009, 09:21:41
Go to the top of the page
+Quote Post
pomovy_szukam11
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.03.2009
Skąd: W miasteczku ;)

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


mam problem jak zrobić post i go zapisać [?]
Go to the top of the page
+Quote Post
Marr
post
Post #8





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

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


@slawek3422

spróbuj sobie wykonać swoje zapytanie bezpośrednio na bazie danych, np w okienku SQL phpmyadmin'a i wtedy zobaczysz czy problem lezy w zle skonstruowanym zapytaniu czy po stronie php.
Go to the top of the page
+Quote Post
slawek3422
post
Post #9





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


no właśnie że nie działa w phpMyAdminie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

działa tylko wtedy jak dam, że id_parametru in (52, 2) ale wtedy wyświetli mi monitory, które mają którykolwiek z podanych parametrów a mi chodzi o to, żeby monitor spełniał wszystkie warunki

czyżby takie zapytanie nie było możliwe ? może źle skonstruowana tabela / baza ?

Ten post edytował slawek3422 13.03.2009, 09:28:58
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: 22.08.2025 - 14:54