Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> proste zapytanie, relacja jeden do wielu
damiankopiec
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 23.02.2009
Skąd: Jelenia Góra

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


Witam,

mam straszny problem z jak mi sie wydaje banalnym zapytaniem. Przypuśćmy, że w bazie są dwie tabele:

ca_object
- object_id

ca_object_value
- value_id
- object_id
- value

tabela ca_object jest z tabelą ca_object_value w relacji 1:n, w tabeli ca_object_value są dane:

value_id | object_id | value
1 | 12 | zielony
2 | 12 | czerwony
3 | 12 | czarny

i teraz moje pytanie: w jaki sposób mogę pobrać wszystkie obiekty (z tabeli ca_object ), które są i zielone i czarne?

Bardzo proszę o pomoc

Ten post edytował damiankopiec 3.12.2009, 10:32:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Indeo
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


To nic trudnego i można to zrobić na kilka sposobów.
Np stosując podzapytania:
  1. SELECT * FROM ca_object WHERE
  2. (object_id IN (SELECT object_id FROM ca_object_value WHERE value='zielony'))
  3. AND
  4. (object_id IN (SELECT object_id FROM ca_object_value WHERE value='czarny'))


albo wykorzystując operacje na agregacie:
  1. SELECT O.*,group_concat(V.value) AS test
  2. FROM ca_object O
  3. INNER JOIN ca_object_value V ON O.object_id=V.object_id
  4. GROUP BY O.object_id HAVING
  5. (test LIKE '%zielony%czarny%') OR (test LIKE '%czarny%zielony%')


Pozdrawiam (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 12:34