Jump to content
SamBuilder

SELECT unica para varias pesquisas

Recommended Posts

Olá pessoal,

 

Gostaria da ajuda de vocês, se possível, para uma única select que faça o seguinte:

 

Eu preciso de uma query que liste pra mim todos os registros da tabela, listando primeiro o GRUPO que eu pedir e logo abaixo os demais grupos. Exemplo:

 

GRUPO 01

GRUPO 02

GRUPO 03

GRUPO 04

 

SELECT * FROM TABELA WHERE (PRIMEIRO O "GRUPO 03" E DEPOIS OS DEMAIS GRUPOS)

 

Não sei se eu fui bem claro na minha explicação, mas, o que eu queria era evitar ter que criar duas select pra essa função. Eu não queria criar uma select pra o GRUPO 03 por exemplo, e outra select pra o restante. Entenderam?

 

Grato se puderem me dar uma força.

Share this post


Link to post
Share on other sites

$SQL = "SELECT * FROM 'TABELA' GROUP BY 'CAMPO GRUPO'";
$query = $con->query($SQL);

while($row = mysqli_fetch_array($query){
echo $row['CAMPO GRUPO'];
 $SQL2 = "SELECT * FROM 'TABELA' WHERE  'CAMPO GRUPO' = '".$row['CAMPO GRUPO'']."'";
$query2 = $con->query($SQL2);

while($row2 = mysqli_fetch_array($query2){
   echo $row2['campodesejado'];
}
}

$SQL = SELECT * FROM 'TABELA' GROUP BY 'CAMPO GRUPO'

$query = $con->query($SQL);

 

while($row = mysqli_fetch_array($query){

echo $row['CAMPO GRUPO];

$SQL2 = SELECT * FROM 'TABELA' WHERE 'CAMPO GRUPO' = '".$row['CAMPO GRUPO']."'

$query2 = $con->query($SQL2);

 

while($row2 = mysqli_fetch_array($query2){

echo $row2['campodesejado'];

}

}

Share this post


Link to post
Share on other sites
$SQL = "SELECT * FROM 'TABELA' GROUP BY 'CAMPO GRUPO'";
$query = $con->query($SQL);

while($row = mysqli_fetch_array($query){
echo $row['CAMPO GRUPO'];
 $SQL2 = "SELECT * FROM 'TABELA' WHERE  'CAMPO GRUPO' = '".$row['CAMPO GRUPO'']."'";
$query2 = $con->query($SQL2);

while($row2 = mysqli_fetch_array($query2){
   echo $row2['campodesejado'];
}
}

$SQL = SELECT * FROM 'TABELA' GROUP BY 'CAMPO GRUPO'

$query = $con->query($SQL);

 

while($row = mysqli_fetch_array($query){

echo $row['CAMPO GRUPO];

$SQL2 = SELECT * FROM 'TABELA' WHERE 'CAMPO GRUPO' = '".$row['CAMPO GRUPO']."'

$query2 = $con->query($SQL2);

 

while($row2 = mysqli_fetch_array($query2){

echo $row2['campodesejado'];

}

}

 

 

Olá amigo,

 

O que eu queria era justamente evitar ter que usar duas query. Estava pensando em algo que resumisse a consulta em apenas uma query.

Share this post


Link to post
Share on other sites

Pesquise por Joins ou SubSelectes

 

Eu uso join pra selecionar duas tabelas. Vou pesquisar sobre subselectes.

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

  • Similar Content

    • By MARCEL MENDES
      Ajuda , tenho um projeto que fiz a depuração no visual studio Erro Banco de dados.
       
      Quando abro a tela de login, e coloco as credenciais  ele não loga no sistema, da erro com o banco de dados msqly eu tenho um banco que já está criado, estou usando o xampp tenho que fazer alguma configuração para que o mesmo puxe as informações do banco de dados ?

    • By asacap1000
      Galera estou com uma consulta que ainda não consegui entender o porque. gostaria que ela trouxesse em apenas uma linha mas não vem de forma alguma.
       
      SELECT BO.LAGER, BO.ID_OS, K.ID_KLIENT, K.SUCHBEGRIFF CNPJ_CPF, K.NAME, BI.DIV_1 LOTE, BI.DIV_10 DI_DDE, (SELECT DISTINCT DIS.ID_DISPATCHER FROM FISCAL.DOCHD DC, WMS_EADI.DISPATCHER DIS WHERE DC.DOCHD_DOC_ID = BO.NR_NF AND DC.DOCHD_RPS_DESP = DIS.SUCHBEGRIFF) COD_COMISSARIA, (SELECT DISTINCT DIS.BEZ FROM FISCAL.DOCHD DC, WMS_EADI.DISPATCHER DIS WHERE DC.DOCHD_DOC_ID = BO.NR_NF AND DC.DOCHD_RPS_DESP = DIS.SUCHBEGRIFF) COMISSARIA, BO.NR_NF, BO.DATE_BILL, BO.DATE_EMISS, --------ABAIXO OS TIPOS DE SERVIÇOS ONDE ESTÃO OCORRENDO CADA RESULTADO ELE CRIA UMA LINHA---------------- (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'ARMAZ')) VLR_ARMAZ, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'GER.RISCO')) VLR_GER_RISCO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'MOVIMENT')) VLR_MOVIMENTACAO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'DESUNIT')) VLR_DESUNIT, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'PESAGEM')) VLR_PESAGEM, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT LIKE 'AVERBA%')) VLR_AVERBACAO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'FAT.MINIMO.')) VLR_FAT_MINIMO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE NOT IN ('21.02', '21.03') AND WER.WERT = 'OUT.SERV.')) VLR_OUTROS_SERV, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE = '21.02' AND WER.WERT = 'OUT.SERV.')) TRANSF_IN, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE = '21.03' AND WER.WERT = 'OUT.SERV.')) TRANSF_OUT FROM BILL_OS BO, BILL_OS_ITEM BI, KLIENTEN K WHERE BO.LAGER = BI.LAGER AND BO.ID_KLIENT = BI.ID_KLIENT AND BO.ID_OS = BI.ID_OS AND BO.LAGER = K.LAGER AND BO.ID_KLIENT = K.ID_KLIENT and k.id_klient = '3099' and BO.NR_NF = '121304' AND BO.STATUS = '90' AND TRUNC(BO.DATE_BILL) BETWEEN '28/08/2019' AND '28/08/2019' GROUP BY BO.LAGER, BO.ID_OS, K.ID_KLIENT, K.SUCHBEGRIFF, K.NAME, BO.DATE_EMISS, BO.NR_NF, BO.DATE_BILL, BI.BILLITE, BI.DIV_1, BI.DIV_10
       
      Alguem consegue identificar neste select porque ele vem assim?
    • By helcarib
      Estou desenvolvendo um sistema que sorteia 20 questoes em um banco mysql e exibe na tela, como se fosse uma prova. Como vou usar como ferramenta de estudo, as questões que o usuários acertarem vão  para o fim da fula e as que errar continua sendo sorteadas junto com as outras até todas serem exibidas em provas.
       
      Isso que descrevi acima ja está funcionando, porque criei um campo na tabela questao, que_estudada que vale 0 pra todas as questoes e quando o usuário  acerta ele passa a valer 1, quando tem menos de 20 registros iguais a 0 ele atualiza tudo pra 0 e recomeca as questões.
       
      Nesse momento queria que o sistema tivesse varios usuarios e que cada um tenha a sua "fila de questoes" e que as que ele acertar continue sendo exibidas para os outros, então criei mais duas tabelas: prova e item com os seguintes campos:
      prova (pro_cod, usu_cod, mat_cod,pro_data)
      item (pro_cod, ite_cod, que_cod)
      cada prova tem só  1 materia, mas tem 20 questões.
      Importante que essas questoes que forem acertadas nao podem se repetir enquanto o usuario não estudar todas elas em provas. Eu estou com dificuldade para fazer isso com multiplos usuários, se alguém puder dar uma luz inicial, aí vou tentar fazer e depois mando a solução. Desde já  muito agradecido!
    • By Thomeny
      Olá pessoal, sou novo no mundo da programação e banco de dados, quer dizer passei vários anos parado em outra área e agora resolvi voltar.
       
      Enfim estou precisando fazer o seguinte:
       
      Tenho dois campos que usa um select (irei colocar logo abaixo) para ambos.
      Esse select traz o resultado iguais para os dois, porém o cliente precisa fazer o seguinte:
       
      Para combobox 1 ao selecionar paciente, esse paciente não apareça no combobox dois porque já foi selecionado.
       
      Como procedo, se puderem ser claros, abaixo segue o select usado em ambos pra trazer a lista de pacientes...
       
      Select Distinct
        PC.PES_COD,
        PC.PES_NOME,
        PF.NASCIMENTO,
        PF.PFI_MAE,
        Concat(PC.PES_COD, ' - ', LTrim(RTrim(PC.PES_NOME)), ' - ', PF.NASCIMENTO, ' - ', LTrim(RTrim(PF.PFI_MAE))) As NOME
      From
        GER_PESSOA PC
        Inner Join
        GER_PESSOA_FISICA PF On (PC.PES_COD = PF.PES_COD)
      Order By
        PC.PES_NOME
    • By Pedro Batista Lopes
      Olá eu estou fazendo um sistema em php com mysql, estou com uma dificuldade se alguém puder me ajudar.
      Esse programa se conecta no banco de dados e recebe uma query, transformo essa query em um json, para jogar no front,
      mais estou com dificuldade no tratamento dessa query.
      segue o codgio.
      <?php $hostname = 'localhost'; $bancodados = 'sistema'; $usuario = 'root'; $senha =''; $conn = new mysqli($hostname,$usuario,$senha,$bancodados); if ($conn->connect_errno) { echo "Falha ao conectar: " . $mysqli->connect_errno; } $result_nota = "select DISTINCT cli.nome, nf.numero_nf, nf.data_em, nf.valor from cliente cli join nota_fiscal nf on cli.id = nf.id_cliente WHERE nf.data_em >= '2019-01-01' and nf.data_em <= '2019-01-30'"; $resultado_nota = mysqli_query($conn,$result_nota); $dado = array(); while ($row_nota = mysqli_fetch_object($resultado_nota)) { array_push($dado, $row_nota); } echo json_encode($dado); O resultado é esse.
      [ { nome: "Pedro", numero_nf: "200", data_em: "2019-01-03", valor: "200" }, { nome: "Paulo", numero_nf: "201", data_em: "2019-01-05", valor: "300" }, Gostaria de incluir embaixo do valor mais um campo com o nome janeiro ai fazer um loop do dia 01/02/2019 a 28/02/2019 e pegar todos o cliente do de fevereiro, e incluir em baixo do valor em cada cliente.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.