Jump to content
pedrotuga

um query do catano... ajudem-me

Recommended Posts

pedrotuga

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?

Share this post


Link to post
Share on other sites
nuno.reis

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

Share this post


Link to post
Share on other sites
Destineo

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 


- Destineo

Share this post


Link to post
Share on other sites
saramgsilva

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:

Share this post


Link to post
Share on other sites
nuno.reis

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

Share this post


Link to post
Share on other sites
saramgsilva

É 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:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.