Ir para conteúdo
felipepai

Select na tabela

Recommended Posts

Tenho uma tabela semelhante a esta, como listo todos os produtos são AZUL e GRANDE

no caso seria o produto 1 e produto 4

 

ID produto1 Atributo Valor
1 produto1 cor azul
2 produto1 tamanho grande
3 produto2 cor vermelho
4 produto2 tamanho grande
5 produto3 cor branco
6 produto3 tamanho pequeno
7 produto4 cor azul
8 produto4 tamanho grande

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não montaria essa tabela desta forma porque está agrupando valores diferentes a colunas identicas. Eu faria algo como:

 

ID / PRODUTO / COR / TAMANHO

1  / Produto 1  / Azul / Grande

2 / Produto 2  / Vermelho / Pequeno

etc...

 

Criaria colunas para cada uma das especificações, mas dentro do seu caso a consulta ficaria algo como:

 

SELECT * FROM tabela WHERE valor IN ('azul','grande') GROUP BY produto

 

E dai então daria um fetch_assoc para listar os produtos 4 e 1 com seus respectivos valores.

Essa querie vai buscar todos os registros que tenham AZUL e GRANDE na coluna VALOR e agrupar os resultados pela coluna PRODUTO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select produto

From tabela

Where ( (atributo ='cor' and valor = 'azul')

              and

             (atributo = 'tamanho' and valor='grande') )

Group by produto

Having count(() = 2

 

Listarâ os produtos que tem os dois atributos.

 

O primeiro modelo tem a vantagem de se poder criar um atributo sem precisar criar uma coluna , p. Ex. Origem(brasil,eua,china...) mas se paga por sqls mais complicadas.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por teteuvec
      Prezados boa noite!
       
      Gostaria de ajuda com um problemas na pesquisa select do trecho abaixo. Devo estar errando na sintaxe.
       
      O erro que retorna é Unknown column 'link_record' in 'where clause', porém esta coluna existe!
       
      <td bgcolor="#F5F5F5"><?php $query_Recordset2 = "SELECT * FROM {$_SESSION['table_base']} WHERE `link_record` = {$data1['id']} AND `record_caracter_id` = '1' order by {$_SESSION['id_base']} DESC"; $Recordset2 = mysqli_query($connect, $query_Recordset2) or die(mysqli_error($connect)); $row_Recordset2 = mysqli_fetch_assoc($Recordset2); $totalRows_Recordset2 = mysqli_num_rows($Recordset2); while($data2 = mysqli_fetch_assoc($Recordset2)) { echo "Contato: ".$data2["name"]."</br>"; echo "CPF/CNPJ: ".$data2["cpf_cnpj"]."</br>"; echo "e-mail: ".$data2["email"]."</br>"; echo "Celular: ".$data2["cellphone"]."</br>"; echo "Telefone: ".$data2["telephone"]."</br>"; echo "Documento de identificação: ".$data2["name"]."</br>"; echo "</br>"; }?> </td>  
    • Por Omar~
      Estou precisando fazer uma query em uma tabela usando LIKE, mas preciso restringir que somente sejam mostrados os resultados cujo tenha uma das colunas idênticas.
      Exemplo de query (que está errada!!!)
      SELECT     coluna_A,     coluna_B,     coluna_C FROM     tabela WHERE     coluna_A LIKE '%ALGUM_VALOR%' OR     coluna_B LIKE '%ALGUM_VALOR%' AND     coluna_C = 'tenha esse valor' Então preciso pesquisar existência de "algum valor" dentro das colunas A e B da tabela, mas que sejam retornados apenas resultados cujo a coluna C seja apenas um valor, que pode duplicar de registro para registro, mas na mesma tabela possuem outros registros cujo a coluna C não são iguais.
       
      Obs.: Sempre fiz esse processo de filtrar o resultado via PHP, mas queria saber como fazer diretamente na query.

      #EDIT:
      Sendo mais específico
      Digamos registros mais ou menos assim:
       
      SELECT coluna_A, coluna_B, coluna_C FROM tabela WHERE coluna_A LIKE '%João%' OR coluna_B LIKE '%João% AND   coluna_C = 'Carpinteiro'
      Ou seja mesmo que que haja mais de um registro, somente é para trazer os resultados cujo a coluna C for carpinteiro
       
       
       
       
    • Por JoaoVituBR
      Olá pessoal, eu tenho uma duvida, no meu banco de dados eu tenho duas tabelas
      [usuarios]


      [users_items]

       
      e tenho uma área em meu site em que tem varias abas com o nome dos jogos que o usuário possui e que quando clicado lista todos os itens que está no inventario de cada jogo,
      mas eu gostaria de listar apenas os jogos em que esteja listado na tabela users_items para certo usuário.
       
    • Por Carlos Primo
      Olá, fiz um código VBA Sql para consultar dados de uma tabela e atribuí os valores dos dados em 3 variveis, porem uma das váriaveis não funciona corretamente.
      Os dados desta variavel que não funciona possui letras e números, pois os dados da tabela referente a esta variavel possui letras e números.
      Quando coloco o valor direto dentro do select o código funciona, mas com variável não da certo.
      Também funciona quando retiro esta variável.
      No código, o nome da variável é PREFIX
       
      O erro que aparece é esse:
      Run-time error '-2147217900 (80040e14)':
      [Microsoft][ODBC SQL Server Driver]  Invalid column name 'Y18HW'.

       
      Segue o código:
       
      Sub sb_RetornaConsulta()
       
      Application.ScreenUpdating = False
         
          Dim obj_Connection As New ADODB.Connection
          Dim obj_RecordSet As New ADODB.Recordset
          Dim str_SQL As String
          Dim str_PlanilhaDestino As String
          Dim str_ConnString As String
          Dim str_LinhaInicial As String
          Dim nr_coluna As Integer
          Dim Prefix As Variant
          Dim S_Inicia As Variant
          Dim S_Fina As Variant
          
           Prefix = frm_Serie.Pref.Value        'Valor do prefixo digitado no textbox da userform = Y18HW 
           S_Inicia = frm_Serie.S_Inicial.Value 'Valor do Inicial digitado no textbox da userform = 177781 
           S_Fina = frm_Serie.S_Final.Value     'Valor do Final digitado no textbox da userform = 179780
                
          str_PlanilhaDestino = "Resultado"
          str_ConnString = "Driver={SQL Server};server=NOME DO SERVER; Database=NOME DA BASE; UID=USUÁRIO;PWD=SENHA"
          str_LinhaInicial = 3
          
          
          
          str_SQL = "SELECT TABELA.NRSerie AS Serie, TABELA.BancadaID AS Bancada, " & _
                      " TABELA.ResQn AS Qn, TABELA.ResQt AS Qt, " & _
                      " TABELA.ResQm AS Qm, TABELA.Data AS [Data Produção] " & _
                      " FROM TABELA " & _
                      " WHERE TABELA.Serie >= " & S_Inicia & " " & _
                      " AND TABELA.Serie <= " & S_Fina & " "
                      " AND Tabela.Prefixo = " & Prefix & " " & _
                      " ORDER BY TABELA.NRSerie DESC "
              
          ' Limpa dados
          Sheets(str_PlanilhaDestino).Select
          Cells.Select
          Selection.ClearContents
          Range("A1").Select
       
          ' Executa query no SQL
          obj_Connection.Open str_ConnString
          obj_RecordSet.Source = obj_Connection
          obj_RecordSet.Open str_SQL, obj_Connection
              
          ' Inclui cabeçalhos da query:
          For nr_coluna = 0 To obj_RecordSet.Fields.Count - 1
              Worksheets(str_PlanilhaDestino).Cells(str_LinhaInicial, nr_coluna + 1).Value = obj_RecordSet.Fields(nr_coluna).Name
          Next
           
          ' Salva dados no Excel
          Sheets(str_PlanilhaDestino).Cells(CInt(str_LinhaInicial + 1), 1).CopyFromRecordset obj_RecordSet
       
          ' Finaliza conexão e objetos
          obj_RecordSet.Close
          obj_Connection.Close
          Set obj_RecordSet = Nothing
          Set obj_Connection = Nothing
           
           
           Application.ScreenUpdating = True
           
           frm_Serie.Hide
           
      End Sub
    • Por Enlibra
      Como fazer o select (php) de todos os dados de 2 tabelas sem registos id comuns.
      por exemplo uma tabela de custos e outra de tesouraria em que queria listar os movimentos por data mas sem relação entre elas?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.