• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

6 mensagens neste tópico

Tendo estas tabelas

CREATE TABLE range_limits
(range      NUMERIC(2)      CONSTRAINT pk PRIMARY KEY,
low_limit       NUMERIC(7),
up_limit       NUMERIC(7)   
);

Create table elements
(ID NUMERIC(4) CONSTRAINT pk2 PRIMARY KEY,
name varchar(100),
testvalue NUMERIC(7)
);

como eh k faco para listar todos os nomes e o range no qual o testvalue se insere?

alguma sugestao quanto ao sql?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim de repente sem testar... não garanto nada, mas tenta algo do tipo

SELECT DISTINCT elements.name, range_limits.range

FROM elements, range_limits

WHERE elements.testvalue<range_limits.up_limit

AND elements.testvalue>range_limits.low_limit

Reis

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi pedrotuga,

Poderás fazer um join entre as duas tabelas, ou seja algo como

SELECT e.name, r.range 
FROM elements e 
LEFT JOIN range_limits r
ON e.testvalue BETWEEN r.low_limit AND r.up_limit 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim de repente sem testar... não garanto nada, mas tenta algo do tipo

SELECT DISTINCT elements.name, range_limits.range

FROM elements, range_limits

WHERE elements.testvalue<range_limits.up_limit

AND elements.testvalue>range_limits.low_limit

Reis

mas aqui estas a fazer o produto cartesiano...e tipo nao seria mais correcto fazer 1 juncao...

eu tb nao percebi bem o que ele keria...

Oh pedrotuga...esplica la melhor...  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

  As junções funcionam bem apenas quando sabes qual é ( e qual a versão ) do que estás a usar. Nas aplicações que desenvolvo utilizo uma camada de interface que me traduz listas de comandos em comandos sql, e fá-lo tendo em conta se estou a utilizar ORACLE, SQL SERVER, MySql ou InterBase... assim, quando quero fazer uma query rápida, e directa, nunca me estou a chatear a ver qual os joins que esse gestor permite usar e de que forma. Uso esta forma que funciona em todos os gestores que uso... Já o left join... por exemplo em ORACLE < 9 não vai funcionar... Além disso, muitos dos gestores (julgo que todos os que uso...) traduzem os joins em cláusulas where. Foi por isso que não usei joins e usei o produto cartesiano. É que todo o SQL que faço, faço-o de forma a poder correr em todo lado... amanhã pode haver um cliente que tenha licença para outro software e não tenho paciência para estar a alterar todo (ou parte) do código SQL que está num projecto.

Reis

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É que todo o SQL que faço, faço-o de forma a poder correr em todo lado... amanhã pode haver um cliente que tenha licença para outro software e não tenho paciência para estar a alterar todo (ou parte) do código SQL que está num projecto.

Reis

pois nesse sentido é bom, mas depois nao repetes info... ( ok vou dar 1 vista de olhos no sql, nessa parte... lol )  :dontgetit:

eu os join que uso, sao coisas muito simples...nao ando com grandes complicaçoes...  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora