ďťż
 
Cz??? wspólna - problem z zapytaniem sql ďťż
 
Cz??? wspólna - problem z zapytaniem sql
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

Cz??? wspólna - problem z zapytaniem sql



Claude Haux - 14-12-2006 16:08
Cz??? wspólna - problem z zapytaniem sql
  Struktura bazy:

Tabela Foto
id_photo int
(...)

Tabela Ludzie
id_osoby int
(...)

Tabela Foto_INF
id_photo int
id_osoby int

Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
zdj?cia oraz id ka?dej osoby).

Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
id_osoby mam.

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





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-12-2006 16:08

  Claude Haux wrote:
> Struktura bazy:
>
> Tabela Foto
> id_photo int
> (...)
>
> Tabela Ludzie
> id_osoby int
> (...)
>
> Tabela Foto_INF
> id_photo int
> id_osoby int
>
> Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> zdj?cia oraz id ka?dej osoby).
>
> Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
> których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
> numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
> id_osoby mam.

By?o wiele razu. Wyszukaj posty ze s?ówkiem HAVING a wcze?niej czy pó?niej
trafisz na odpowied?.

--
P.M.




A.L.E.C - 14-12-2006 16:08

  Pawe? Matejski wrote:

>> Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
>> których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
>> numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
>> id_osoby mam.
>
> By?o wiele razu. Wyszukaj posty ze s?ówkiem HAVING a wcze?niej czy pó?niej
> trafisz na odpowied?.

Nie by?o mowy o grupowaniu, zapewne chodzi?o o prosty join

SELECT DISTINCT * FROM foto f
JOIN foto_inf i ON (f.id_foto = i.id_foto)
WHERE i.id_osoby IN (12,13)

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




clhx@op.pl - 14-12-2006 16:08

  Nie. Ani jedna, ani druga wersja nie odpowiada na moje pytanie.

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





Herakles - 14-12-2006 16:08

  oznacz? iloczyn zbiorów(ten taki znaczek podobny do "n" przez "n".
znaczek nale?y oznacz? przez "e". Logiczne i oznacz? przez "i".

I tak w Rasiowej kiedy? przeczyta?em tak? m?dro??:
xeAnB<=>xeAixeB

Wi?c w zapytaniu sql b?dzie ta sama logika:
where x IN (elementy zbioru A) and x IN (elementy zbioru B)

oczywi?cie zamiast elementy zbioru X wstawiamy warto?ci po przecinku lub
zapytanie zwracaj?ce odpowiednie dane. Uwaga te podzapytania dla du?ych
baz mog? by? bardzo niewydajne i wtedy trzeba kombinowa? innymi metodami.




Herakles - 14-12-2006 16:08

  Claude Haux napisa?(a):
> Struktura bazy:
>
> Tabela Foto
> id_photo int
> (...)
>
> Tabela Ludzie
> id_osoby int
> (...)
>
> Tabela Foto_INF
> id_photo int
> id_osoby int
>
> Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> zdj?cia oraz id ka?dej osoby).
>
> Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
> których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
> numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
> id_osoby mam.
>
>
>
czyli:

select
foto_id
from
foto
where
foto_id in (select foto_id from foto_inf where osoba_id=12) and
foto_id in (select foto_id from foto_inf where osoba_id=13)




Claude Haux - 14-12-2006 16:08

  > Claude Haux napisa?(a):
> > Struktura bazy:
> >
> > Tabela Foto
> > id_photo int
> > (...)
> >
> > Tabela Ludzie
> > id_osoby int
> > (...)
> >
> > Tabela Foto_INF
> > id_photo int
> > id_osoby int
> >
> > Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> > zdj?cia oraz id ka?dej osoby).
> >
> > Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
> > których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
> > numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
> > id_osoby mam.
> >
> >
> >
> czyli:
>
> select
> foto_id
> from
> foto
> where
> foto_id in (select foto_id from foto_inf where osoba_id=12) and
> foto_id in (select foto_id from foto_inf where osoba_id=13)

No tak, ale mi chodzi o jedno uniwersalne zapytanie, które nie jest zale?ne od
ilo?ci ludzi okre?lonych przez osoba_id. Czyli jak dane wej?ciowe mam w postaci:
2,4,6,11,23 to chcia?bym gdzie? do zapytania wrzuci? "in (2,4,6,11,23)".
Inaczej, nie chc? dynamicznie konstruowa? zapytania poza baz?. Chc? do bazy
wrzuci? list? numerków oddzielonych przecinkami i dosta? wynik.

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




Artur Muszynski - 14-12-2006 16:08
=?iso-8859-2?Q?Re:_Cz=EA=B6=E6_wsp=F3lna_-_problem_z_zapytaniem_sql?=
  clhx@op.pl wrote:
> Nie. Ani jedna, ani druga wersja nie odpowiada na moje pytanie.

Naprawd?? IMO odpowied? Paw?a jest dobr? wskazówk?. HAVING COUNT...

artur




hubert depesz lubaczewski - 14-12-2006 16:08

  On 2006-11-30, Claude Haux <clhx@op.pl> wrote:
> Tabela Foto
> id_photo int
> (...)
> Tabela Ludzie
> id_osoby int
> (...)
> Tabela Foto_INF
> id_photo int
> id_osoby int
> Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> zdj?cia oraz id ka?dej osoby).
> Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
> których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
> numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
> id_osoby mam.

mam pytanie:
czy w foto_inf mog? za?o?y?, ?e kombinacja (id_photo, id_osoby) jest
unikalna?
tzn. nie b?dziesz mia? dwa razy wpisanej tej samej osoby dla tej samej
fotki?
jak tak, to prosz?:

select id_photo
from foto_inf
where id_osoby in (12,13)
group by id_photo
having count(*) = 2;

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




hubert depesz lubaczewski - 14-12-2006 16:08

  On 2006-11-30, A.L.E.C <alec1@poczta.onet.pl> wrote:
> Nie by?o mowy o grupowaniu, zapewne chodzi?o o prosty join

ekhem - grupowanie jest du?o prostsze od takiego joina.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




Claude Haux - 14-12-2006 16:08

  > (...)
> > Jak mam np. zdj?cie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> > zdj?cia oraz id ka?dej osoby).
> > Nie potrafi? skonstruowa? zapytania, które wyci?gnie mi z bazy numery zdj?? na
> > których s? TYLKO wskazane osoby. To znaczy, chc? np. TYLKO zdj?cia z osobami
> > numer 12 i 13. Jak to zrobi? w jednym zapytaniu sql? Dane wej?ciowe - numery
> > id_osoby mam.
>
> mam pytanie:
> czy w foto_inf mog? za?o?y?, ?e kombinacja (id_photo, id_osoby) jest
> unikalna?
> tzn. nie b?dziesz mia? dwa razy wpisanej tej samej osoby dla tej samej
> fotki?
> jak tak, to prosz?:
>
> select id_photo
> from foto_inf
> where id_osoby in (12,13)
> group by id_photo
> having count(*) = 2;
>
> depesz

Tak?e ?le. To zapytanie wy ?wietli wszystkie zdj?cia na których s? dok?adnie 2
osoby i conajmniej jedna z wymienionych w warukinu where. Czyli wszystkie
zdj?cia na których jest tylko 12 i 13 razem ale tak?e te, na krórych jest 12 z
jak?? inn? osob? oraz 13 z jak?? inn? osob?. A zatem suma zbiorów, a nie iloczyn. ;(

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




hubert depesz lubaczewski - 14-12-2006 16:08

  On 2006-12-01, Claude Haux <clhx@op.pl> wrote:
> Tak?e ?le. To zapytanie wy ?wietli wszystkie zdj?cia na których s? dok?adnie 2
> osoby i conajmniej jedna z wymienionych w warukinu where. Czyli wszystkie
> zdj?cia na których jest tylko 12 i 13 razem ale tak?e te, na krórych jest 12 z
> jak?? inn? osob? oraz 13 z jak?? inn? osob?. A zatem suma zbiorów, a nie iloczyn. ;(

serio? to mo?e k... zamiast si? wym?drza? przetestuj! to ?le, tamto ?le.
jestem PEWIEN, ?e zapytanie które poda?em robi dok?adnie to co chcia?e?
- poka?e zdj?cia na których wyst?puje i 12 i 13 *JEDNOCZE?NIE*.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




A.L.E.C - 14-12-2006 16:08

  hubert depesz lubaczewski wrote:
> On 2006-11-30, A.L.E.C <alec1@poczta.onet.pl> wrote:
>> Nie by?o mowy o grupowaniu, zapewne chodzi?o o prosty join
>
> ekhem - grupowanie jest du?o prostsze od takiego joina.

no tak, a w dodatku pisa?o "12 i 13" a ja zrozumia?em 12 lub 13.

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




Claude Haux - 14-12-2006 16:08

 
> serio? to mo?e k... zamiast si? wym?drza? przetestuj! to ?le, tamto ?le.
> jestem PEWIEN, ?e zapytanie które poda?em robi dok?adnie to co chcia?e?
> - poka?e zdj?cia na których wyst?puje i 12 i 13 *JEDNOCZE?NIE*.

Przepraszam. Masz racj?. Dzia?a.
To teraz, mo?esz mi wyt?umaczy? jak krowie na miedzy, dlaczego to do cholery
dzia?a i dlaczego warto?ci w tej ??czonej tabeli mia?y by? unikalne? Bo
faktycznie, jak si? powtórzy?o jaki? rekord, to wszystko si? psu?o.

Tak czy siak, dzi?ki.

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




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-12-2006 16:08

  Claude Haux wrote:
>> serio? to mo?e k... zamiast si? wym?drza? przetestuj! to ?le, tamto ?le.
>> jestem PEWIEN, ?e zapytanie które poda?em robi dok?adnie to co chcia?e?
>> - poka?e zdj?cia na których wyst?puje i 12 i 13 *JEDNOCZE?NIE*.
>
> Przepraszam. Masz racj?. Dzia?a.
> To teraz, mo?esz mi wyt?umaczy? jak krowie na miedzy, dlaczego to do cholery
> dzia?a i dlaczego warto?ci w tej ??czonej tabeli mia?y by? unikalne? Bo
> faktycznie, jak si? powtórzy?o jaki? rekord, to wszystko si? psu?o.

Zamiast group by daj order by i wywal having i zobacz co wtedy zwróci. Mo?esz
sobie doda? jeszcze id_osoby, ?eby lepiej widzie? co si? dzieje.

--
P.M.




lukasnowy - 31-01-2007 00:01

  Claude Haux napisał(a):
> Struktura bazy:
>
> Tabela Foto
> id_photo int
> (...)
>
> Tabela Ludzie
> id_osoby int
> (...)
>
> Tabela Foto_INF
> id_photo int
> id_osoby int
>
> Jak mam np. zdjęcie z 5 osobami, to do Foto_INF wstawiam 5 rekortów (numer
> zdjęcia oraz id każdej osoby).
>
> Nie potrafię skonstruować zapytania, które wyciągnie mi z bazy numery zdjęć na
> których są TYLKO wskazane osoby. To znaczy, chcę np. TYLKO zdjęcia z osobami
> numer 12 i 13. Jak to zrobić w jednym zapytaniu sql? Dane wejściowe - numery
> id_osoby mam.
>
>
>

chyba o to ci dokladnie chodzilo:

select distinct id_foto from FotoINF f where id_osoby in (12,13) and
(select count(*) from FotoINF where f.id_foto = id_foto) = (select
count(*) from FotoINF where id_osoby in (12,13) and f.id_foto = id_foto);




lukasnowy - 31-01-2007 00:01

  lukasnowy napisał(a):
> Claude Haux napisał(a):
>> Struktura bazy:
>>
>> Tabela Foto
>> id_photo int
>> (...)
>>
>> Tabela Ludzie
>> id_osoby int
>> (...)
>>
>> Tabela Foto_INF
>> id_photo int
>> id_osoby int
>>
>> Jak mam np. zdjęcie z 5 osobami, to do Foto_INF wstawiam 5 rekortów
>> (numer
>> zdjęcia oraz id każdej osoby).
>>
>> Nie potrafię skonstruować zapytania, które wyciągnie mi z bazy numery
>> zdjęć na
>> których są TYLKO wskazane osoby. To znaczy, chcę np. TYLKO zdjęcia z
>> osobami
>> numer 12 i 13. Jak to zrobić w jednym zapytaniu sql? Dane wejściowe -
>> numery
>> id_osoby mam.
>>
>>
>>
>
> chyba o to ci dokladnie chodzilo:
>
> select distinct id_foto from FotoINF f where id_osoby in (12,13) and
> (select count(*) from FotoINF where f.id_foto = id_foto) = (select
> count(*) from FotoINF where id_osoby in (12,13) and f.id_foto = id_foto);
sorki pomylka

select distinct id_foto from FotoINF f where id_osoby in (3,4) and
(select count(*) from FotoINF where f.id_foto = id_foto) = 2;
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.htw.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