ďťż
 
Problem z zapytanie, ďťż
 
Problem z zapytanie,
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

Problem z zapytanie,



Adrian - 23-11-2005 11:04
Problem z zapytanie,
  Witam,

Mam 2 tabele:
1. tabela z elementami
item_id primary autoincrement int
(... pozostale pola niewazne)

2. przypisanie wyposażeń do elementów
item_id int
eq_id int

Chciałbym wyciągnąć wszystkie elementy z tabeli nr 1 takie, że posiadają np
wyposazenie nr 1,2,4...

Próbowałem to zrobić tak:
select item_id from tab2 where eq_id in (1,2,4)
ale takie rozwiązanie okazuje się błędne, gdyż pobiera wszystkie elementy które
mają przynajmniej jedno z tych wyposażeń, a mi są potrzebne te które posiadają
przynajmniej te wyposażenia które podaje (w tym przypadku 1,2,4, ale mogą mieć
np też więcej 1,2,4,8...).

Czy jest mi wstanie ktoś pomóc? Używam MySQL 4.0, bez podzapytań. Z góry
dziękuje za odpowiedź.

--
Pozdrawiam Adrian

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





A.L.E.C - 26-11-2005 22:28

  Adrian wrote:

> Próbowałem to zrobić tak:
> select item_id from tab2 where eq_id in (1,2,4)
> ale takie rozwiązanie okazuje się błędne, gdyż pobiera wszystkie
> elementy które mają przynajmniej jedno z tych wyposażeń, a mi są
> potrzebne te które posiadają przynajmniej te wyposażenia które podaje
> (w tym przypadku 1,2,4, ale mogą mieć np też więcej 1,2,4,8...).

może dodaj: GROUP BY item_id HAVING COUNT(*) >= 3

--
Aleksander 'A.L.E.C' Machniak http://alec.pl gg-2275252
LAN Management System Developer http://lms.alec.pl




cabbag1@poczta.onet.pl - 26-11-2005 22:28

  > Witam,
>
> Mam 2 tabele:
> 1. tabela z elementami
> item_id primary autoincrement int
> (... pozostale pola niewazne)
>
> 2. przypisanie wyposażeń do elementów
> item_id int
> eq_id int
>
>
> Chciałbym wyciągnąć wszystkie elementy z tabeli nr 1 takie, że posiadają np
> wyposazenie nr 1,2,4...
>
> Próbowałem to zrobić tak:
> select item_id from tab2 where eq_id in (1,2,4)
> ale takie rozwiązanie okazuje się błędne, gdyż pobiera wszystkie elementy
które
> mają przynajmniej jedno z tych wyposażeń, a mi są potrzebne te które posiadają
> przynajmniej te wyposażenia które podaje (w tym przypadku 1,2,4, ale mogą mieć
> np też więcej 1,2,4,8...).
>
> Czy jest mi wstanie ktoś pomóc? Używam MySQL 4.0, bez podzapytań. Z góry
> dziękuje za odpowiedź.
>
> --
> Pozdrawiam Adrian
>
> --
> Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Jeśli obie tabele mają powiązanie (np. id) to najprościej będzie napisać
select :
select item_id,eq_id
from tabela1,tabela2 where tabela1.id=tabela2.id and eq_id in (1,2,4)

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




pastuszek@gmail.com - 26-11-2005 22:29

  > > Witam,
> >
> > Mam 2 tabele:
> > 1. tabela z elementami
> > item_id primary autoincrement int
> > (... pozostale pola niewazne)
> >
> > 2. przypisanie wyposażeń do elementów
> > item_id int
> > eq_id int
> >
> >
> > Chciałbym wyciągnąć wszystkie elementy z tabeli nr 1 takie, że posiadają np
> > wyposazenie nr 1,2,4...
> >
> > Próbowałem to zrobić tak:
> > select item_id from tab2 where eq_id in (1,2,4)
> > ale takie rozwiązanie okazuje się błędne, gdyż pobiera wszystkie elementy
> które
> > mają przynajmniej jedno z tych wyposażeń, a mi są potrzebne te które
posiadają
> > przynajmniej te wyposażenia które podaje (w tym przypadku 1,2,4, ale mogą
mieć
> > np też więcej 1,2,4,8...).
> >
> > Czy jest mi wstanie ktoś pomóc? Używam MySQL 4.0, bez podzapytań. Z góry
> > dziękuje za odpowiedź.
> >
> > --
> > Pozdrawiam Adrian
> >
> > --
> > Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
>
> Jeśli obie tabele mają powiązanie (np. id) to najprościej będzie napisać *
> select :
> select item_id,eq_id
> from tabela1,tabela2 where tabela1.id=tabela2.id and eq_id in (1,2,4)

No niestety takie rozwiązanie odpada, gdyż in, działa tak samo jak wiele razy
wywołane or, a to daje niestety nieporządany efekt, w stylu, że wybiera
elementy, które posiadają nawet tylko jedno z podanych eq_id....

>
>
> --
> Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





faust82 - 26-11-2005 22:29

  Witam

pastuszek@gmail.com napisał(a):
>>>Witam,
>>>
>>>Mam 2 tabele:
>>>1. tabela z elementami
>>>item_id primary autoincrement int
>>>(... pozostale pola niewazne)
>>>
>>>2. przypisanie wyposażeń do elementów
>>>item_id int
>>>eq_id int
>>>
>>>
>>>Chciałbym wyciągnąć wszystkie elementy z tabeli nr 1 takie, że posiadają np
>>>wyposazenie nr 1,2,4...
>>>
>>>Próbowałem to zrobić tak:
>>>select item_id from tab2 where eq_id in (1,2,4)
>>>ale takie rozwiązanie okazuje się błędne, gdyż pobiera wszystkie elementy
>>
>>które
>>
>>>mają przynajmniej jedno z tych wyposażeń, a mi są potrzebne te które
>
> posiadają
>
>>>przynajmniej te wyposażenia które podaje (w tym przypadku 1,2,4, ale mogą
>
> mieć
>
>>>np też więcej 1,2,4,8...).
>>>
>>>Czy jest mi wstanie ktoś pomóc? Używam MySQL 4.0, bez podzapytań. Z góry
>>>dziękuje za odpowiedź.
>>>
>>>--
>>>Pozdrawiam Adrian
>>>
>>>--
>>>Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
>>
>>Jeśli obie tabele mają powiązanie (np. id) to najprościej będzie napisać
>>select :
>> select item_id,eq_id
>>from tabela1,tabela2 where tabela1.id=tabela2.id and eq_id in (1,2,4)
>
>
> No niestety takie rozwiązanie odpada, gdyż in, działa tak samo jak wiele razy
> wywołane or, a to daje niestety nieporządany efekt, w stylu, że wybiera
> elementy, które posiadają nawet tylko jedno z podanych eq_id....
>
>
>>
>>--
>>Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
>
>
>

no to spróbuj jakoś tak, tylko składnie dopasuj do "swojego" sql'a:

SELECT item_id
FROM (SELECT DISTINCT item_id eq_id
FROM tab2
WHERE eq_id in (1,4,5)) t1
GROUP BY item_id
HAVING SUM(eq_id) = 3

Pozdrawiam
Drozdowski Marcin - faust82
  • 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?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [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?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • oefg.opx.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