[PHP] intersectar Queries e obter valores aproximados

DarkWolfXP

Power Member
Boas, mais uma vez recorro a vocês para me ajudarem :p
Eu gostaria de saber se existe alguma maneira de intersectar Queries?
Por exemplo:
Código:
$sql = mysql_query("SELECT * FROM valores WHERE valor>20 AND valor<50 ")or die(mysql_error());
$sql2 = mysql_query("SELECT * FROM valores WHERE texto ='aprovado'")or die(mysql_error());
Como é que faço intersecção dessas duas queries?

Outra coisa que gostaria de também saber era como é que obtenho um valor aproximado de um registo da base de dados?
Por exemplo:
Tenho os seguintes valores na base de dados (10,20,30,40)
E eu procuro por 25 ( que se encontra entre 20 e 30) Como é que irei obter o 20 e o 30 que são os valores mais próximos?

Agradeço desde já a vossa atenção
 
Obrigado pela tua resposta, tive a verificar e a "função" Transaction n é bem o que pretendo...
Se bem entendi pela leitura que fiz, o mysql executa os "comandos" imediatamente e com a função transaction só se realiza um comando quando o comando anterior acabar.

Vou completar o exemplo:
Imaginemos que na tabela "valores" tenho na coluna "valor" os seguintes numeros: 20, 30, 40, 50.
E apenas o registo que tem o numero 30 é que tem na coluna "texto", aprovado.
Código:
$sql = mysql_query("SELECT * FROM valores WHERE valor>20 AND valor<50 ")or die(mysql_error());
//Aqui o resultado da query é : 30 e 40
$sql2 = mysql_query("SELECT * FROM valores WHERE texto ='aprovado'")or die(mysql_error());
//O resultado da query é 30, pois é o unico registo que tem o na coluna texto "aprovado"
//O passo seguinte era intersectar as duas querys, e fazendo a interseção dos resultados apenas obtinhamos o numero 30
Espero ter sido mais explicito.
 
Obrigado pela tua resposta, tive a verificar e a "função" Transaction n é bem o que pretendo...
Se bem entendi pela leitura que fiz, o mysql executa os "comandos" imediatamente e com a função transaction só se realiza um comando quando o comando anterior acabar.

Vou completar o exemplo:
Imaginemos que na tabela "valores" tenho na coluna "valor" os seguintes numeros: 20, 30, 40, 50.
E apenas o registo que tem o numero 30 é que tem na coluna "texto", aprovado.
Código:
$sql = mysql_query("SELECT * FROM valores WHERE valor>20 AND valor<50 ")or die(mysql_error());
//Aqui o resultado da query é : 30 e 40
$sql2 = mysql_query("SELECT * FROM valores WHERE texto ='aprovado'")or die(mysql_error());
//O resultado da query é 30, pois é o unico registo que tem o na coluna texto "aprovado"
//O passo seguinte era intersectar as duas querys, e fazendo a interseção dos resultados apenas obtinhamos o numero 30
Espero ter sido mais explicito.

SELECT * FROM valores WHERE valor>20 AND valor<50 AND texto ='aprovado';

Assim não funciona?!
 
Funciona... tava a complicar o que era fácil :sad:... como sempre.. pensei que houvesse um metodo mais facil que adição do ADD :)

Agora para obter valores aproximados é que não faço mesmo minima de ideia de como irei começar.
 
Infelizmente tenho que requerer à vossa ajuda... novamente!

É o seguinte consegui obter um valor aproximado com a seguinte query
Código:
$sql = mysql_query("(SELECT valor FROM `valores`  WHERE valor <35  ORDER BY valor DESC  LIMIT 1) UNION ALL (SELECT valor  FROM `valores`  WHERE valor >=35  ORDER BY valor ASC LIMIT 1)")or die(mysql_error());
No entanto, se possuir um formulário com vários campos, onde o utilizador vai introduzir os números já não consigo fazer aquela query... porque para cada campo tenho uma coluna.
Como poderei então obter vários números aproximados?
 
Isso apenas me determina um valor aproximado a um valor.
Imaginemos que tenho 2 campos:
preço
capacidade

e supomos que o utilizador introduz para cada campo:
5,3€
1,4 GB de capacidade

Como irei fazer uma pesquisa com esses dados? Eu quero encontrar uma marca de HDD que tnha um preço aproximado a 5,3€ e que tenha uma capacidade aproximadamente de 1,4GB.
Podendo assim apresentar um resultado como um HDD com preço de 5€ e 1GB ou com um preço de 6€ e 2GB...
Resumidamente quero encontrar produtos através de aproximações dos dados introduzidos pelo utilizador.. É possivel?
Espero ter esclarecido o que pretendo concretamente.
 
Back
Topo