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



Michał - 20-08-2007 00:00
Problem z zapytanie z podzapytaniem
  Witam,
Mam taki problem:

Jest sobie tabelka: tabela
O strukturze: nazwa, polaA, poleB, Polec, poleD
Nazwa podobnie jak wartości kolejnych pól nie są unikalne.
Chce wyciągnąć te rekordy który dla spełniają warunki polaA=X i poleB=Y oraz
poleC=Z i poleD=V
Wiem, że dla żadnego rekordu nie zjedzie przypadek, że obie pary warunków
będę spełnione jednocześnie( czyli poleA=X i poleB=Y oraz poleC=Z i poleD=V
nigdy nie będę równe w tym samy rekordzie).
Czyli jak zrobię:
SELECT nazwa FROM tabela
WHERE poleA=X and poleB=Y and poleC=Z and poleD=V
Zwróci Null's

SELECT nazwa FROM tabela
WHERE (poleA=X and poleB=Y) or ( poleC=Z and poleD=V)
Również nie zwróci tego co trzeba aczkolwiek w szczególnych przypadkach może

Zostaje zapytanie z podzapytaniem
SELECT nazwa FROM tabela
WHERE (poleA=X and poleB=Y)
AND nazwa IN
(
SELECT nazwa
FROM tabela
WHERE poleC=Z and poleD=V
)

takie zapytanie zwraca to co trzeba ale trwa wieki- przy oko 100K rekordów
nie doczekałem się wykonania zadania w dwie godziny.

Jak to obejść, jak przyspieszyć, proszę poradzicie.
Odpowiedzi w stylu dodaj pamięcie, zmień maszynę, zmień bazę danych nie
bardzo mnie ratują i z góry z nie serdecznie dziękuję :)

Baza danych InterBase

--
Pozdrawiam
Michał





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 20-08-2007 00:00

  Michał wrote:
> Witam,
> Mam taki problem:
>
> Jest sobie tabelka: tabela
> O strukturze: nazwa, polaA, poleB, Polec, poleD
> Nazwa podobnie jak wartości kolejnych pól nie są unikalne.
> Chce wyciągnąć te rekordy który dla spełniają warunki polaA=X i poleB=Y oraz
> poleC=Z i poleD=V

Unikał bym używania oraz, jeśli przedstawiasz wyrażenie logiczne.

> Wiem, że dla żadnego rekordu nie zjedzie przypadek, że obie pary warunków
> będę spełnione jednocześnie( czyli poleA=X i poleB=Y oraz poleC=Z i poleD=V
> nigdy nie będę równe w tym samy rekordzie).

Czyli użyj OR w miejsce 'oraz'.

> Czyli jak zrobię:
> SELECT nazwa FROM tabela
> WHERE poleA=X and poleB=Y and poleC=Z and poleD=V
> Zwróci Null's
>
> SELECT nazwa FROM tabela
> WHERE (poleA=X and poleB=Y) or ( poleC=Z and poleD=V)
> Również nie zwróci tego co trzeba aczkolwiek w szczególnych przypadkach może

No zaraz. To jak nie zwróci tego co trzeba to za rekordy ty szukasz?

> Zostaje zapytanie z podzapytaniem
> SELECT nazwa FROM tabela
> WHERE (poleA=X and poleB=Y)
> AND nazwa IN
> (
> SELECT nazwa
> FROM tabela
> WHERE poleC=Z and poleD=V
> )

Acha.... czyli ty nie szukasz rekordów a nazw czegoś.

> takie zapytanie zwraca to co trzeba ale trwa wieki- przy oko 100K rekordów
> nie doczekałem się wykonania zadania w dwie godziny.

A czytujesz tą grupę? Tak raz na tydzień pada podobne pytanie. Poszukaj postów
gdzie razem są słówka kluczowe HAVING, CASE i COUNT. Jeśli pałasz bezwarunkową
miłością do podzapytań, IF EXISTS też Ci pomoże.

--
P.M.
  • 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?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lubiatowo.xlx.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