1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[PHP] intersectar Queries e obter valores aproximados

Discussão em 'Web Development' iniciada por DarkWolfXP, 12 de Abril de 2009. (Respostas: 9; Visualizações: 1862)

  1. DarkWolfXP

    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
     
  2. tonebiclas

    tonebiclas Power Member

    não percebi muito bem o que queres com intersecção de query's, mas o conceito de transacção não será útil ?
     
  3. DarkWolfXP

    DarkWolfXP Power Member

    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.
     
  4. Xikinho90

    Xikinho90 Power Member

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

    Assim não funciona?!
     
  5. DarkWolfXP

    DarkWolfXP Power Member

    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.
     
  6. AliFromCairo

    AliFromCairo Power Member

    Podes ordenar pelo valor, e fazes o resto em código facilmente, uma vez que os registos irão estar ordenados.
     
  7. DarkWolfXP

    DarkWolfXP Power Member

    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?
     
  8. DarkWolfXP

    DarkWolfXP Power Member

    Tive a tentar durante esta semana, mas não consegui ainda resolver esta questão.. Não consigo fazer multiplas aproximações.
    Any help?:sad:
     
  9. xOy

    xOy Power Member

    não? é a intercepçao de tudo
     
  10. DarkWolfXP

    DarkWolfXP Power Member

    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.
     

Partilhar esta Página