On Tue, 10 Aug 2004 14:56:06 +0300, mocanu silviu <[EMAIL PROTECTED]> wrote:
> Claudiu Cismaru wrote:
> 
> >>experimental s-a constatat ca nu merge varianta de mai jos:
> >>mysql> select distinct ID from tools where tool like '%ABC%' and tool
> >>like '%DEF%';
> >>Empty set (0.01 sec)
> >>
> >>
> >
> >Pentru ca-ti lipseste gandirea logica din programare (si nu neaparat)...
> >
> >Raspunsul corect este OR nu AND!
> >
> >
> >
> mysql> select  ID from tools where tool='ABC' or tool='DEF';
> +-------------+
> |         ID     |
> +-------------+
> |          25 |
> |          25 |
> |          24 |
> +-------------+
> 3 rows in set (0.00 sec)
> 
> examinind tabelul initial:
> 
> +----------------|---------+
> |          id        | tool     |
> +----------------|----------|
> |         25        | ABC   |
> |         25        | DEF   |
> |         24        | ABC   |
> 
> 
> se vede cu ochiul liber ca id=24 nu satisface conditia "DEF". probabil
> trebuia sa formulez intrebarea initiala astfel:
> 
> cum ar trebui sa arate un select care sa returneze acele "id" pentru 
> care acelasi exista ATIT linii cu tool="ABC" CIT SI tool="DEF" ?
> 
> 
> 
> 
> ---
> Detalii despre listele noastre de mail: http://www.lug.ro/
> 
> 

Aceasta tabela nu este normalizata si ca si consecinta, unele query-uri se
exprima "peste mana".

select 

        distinct z1.id

from

        (select distinct id from ztmp1) z1,

        ztmp1 z2,

        ztmp1 z3

where

        z1.id = z2.id

        and z1.id = z3.id

        and 

        (

        (z2.tool = 'ABC' and z3.tool = 'DEF') or

        (z2.tool = 'DEF' and z3.tool = 'ABC')

        )


SAU

select id from 

(

select 

        distinct z1.id, z1.tool

from

        ztmp1 z1

where

        tool in ('ABC', 'DEF')

group by

        id, tool

) z2

group by id

having count(*) = 2

;


Sunt sigur ca exista solutii si mai simple. Ce am scris mai sus
e testat pe oracle, nu am la indemana mysql, nu stiu cat de bine
suporta subquery, dar se poate emula.

peace,
_bogdan_

--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui