Jump to content
PlatBubbles

Provavel erro de sintaxe em consulta multi table

Recommended Posts

Ola, estou tendo dificuldade para fazer uma consulta seletiva usando duas tabelas, provavelmente estou errando a sintaxe da busca, agradeço caso alguem possa me passar a forma correta de fazer a busca.

 

$sqluser = "SELECT aquestion_id, user_id FROM respostas WHERE user_id like '$logado' UNION SELECT * pergunta, question_id FROM questions WHERE question_id!=aquestion_id ORDER BY RAND() LIMIT 1";

Explicando

Na tabela respostas preciso dos dados aquestion_id e user_id apenas do usuário Logado.

Da tabela questions preciso da pergunta e da question_id que deve ser gerada de forma aleatória mas apenas com os Ids que não estejam  listados em aquestion_id.

Na verdade as duas tabelas tinham o campo question_id porem estava confuso e por isso mudei o campo da primeira tabela para aquestion_id.

 

Agradeço qualquer ajuda, e também pelo tempo dos que leram mesmo se não puderam ajudar.

PlatBubbles

Share this post


Link to post
Share on other sites

Muito interessante, realmente o codigo me retorna uma pergunta aleatoria conforme eu preciso, porem,  nao consigo gravar o valor do Id selecionado em uma variavel que sera usada mais a frente....

<?php
$sqluser = "SELECT a.aquestion_id, a.user_id, b.pergunta FROM respostas a INNER JOIN questions b ON a.aquestion_id != b.question_id WHERE a.user_id = '$logado' ORDER BY RAND() LIMIT 1";
$executarquest=mysqli_query($conuser, $sqluser);
while( $exibir = mysqli_fetch_array($executarquest)){
	$guarda = ($exibir['question_id']);
    echo '<b>Quesion ID: </b>';
	echo $exibir['question_id'];
	echo '<br>';
	echo $exibir['user_id'];
    echo $exibir['pergunta'];
}
?>

Undefined index: question_id Na linha da variavel $guarda e na linha que da echo $exibir['question_id'];

Mas a linha echo $exibir['pergunta']; esta retornando uma pergunta aleatoria nao incluindo as que tenham Id registrado em a.question_id (extamente o que eu preciso).

Saberia me dizer pq esta busca a.aquestion_id != b.question_id retorna o valor correto mas nao permite que este valor seja guardado???

Share this post


Link to post
Share on other sites

é só adicionar b.question_id no select junto com as outras colunas

 

SELECT a.aquestion_id, a.user_id, b.pergunta, b.question_id FROM respostas a INNER JOIN questions b ON a.aquestion_id != b.question_id WHERE a.user_id = '$logado' ORDER BY RAND() LIMIT 1

Share this post


Link to post
Share on other sites

Obrigado novamente, ainda precisa de uns acertos pois alguns Ids ainda se repetem mesmo estando listados em aquestion_id mas esta bem mais proximo do resultado esperado.

Para testes criei 4 perguntas,apos responder as 4 deveria direcionar para uma pagina dizendo que nao ha mais perguntas.

<?php
$sqluser = "SELECT a.aquestion_id, a.user_id, b.pergunta, b.question_id FROM respostas a INNER JOIN questions b ON a.aquestion_id != b.question_id WHERE a.user_id = '$logado' ORDER BY RAND() LIMIT 1";
$executarquest=mysqli_query($conuser, $sqluser);
while ($exibir = mysqli_fetch_array($executarquest)){
if ($exibir['question_id'] > 0)
{
	$guarda = ($exibir['question_id']);
    echo '<b>Quesion ID: </b>';
	echo $exibir['question_id'];
	echo '<br>';
	echo $exibir['pergunta'];
	echo $exibir['user_id'];

}
else{
	header('location:/quiz/acabou.php');
}
}
?>

Estou tentando criar uma serie de perguntas para ajudar meu filho na escola, uma especie de licao de casa mas nao estou conseguindo...

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 rafaelmoreira78
      Boa tarde!
      Estou querendo fazer um select a partir da seleção de um combobox. Nesse combobox o usuário escolhe o tipo de busca que ele quer. Se é por nome, por id, por data etc. E depois, exibe os dados nos campos. Porém, não estou conseguindo e não sei como resolver isso.
      public void consultar(){ String sql ="select * from tbcertificados where ?=?"; try{ pst=conexao.prepareStatement(sql); pst.setString(1,cbConsulta.getSelectedItem().toString()); pst.setString(2,txtBusca.getText()); rs=pst.executeQuery(); if (rs.next()){ lblID.setText(rs.getString(1)); txtNome.setText(rs.getString(2)); comboCursos.setSelectedItem(rs.getString(3)); txtData.setText(rs.getString(4)); txtCH.setText(rs.getString(5)); txtEmpresa.setText(rs.getString(6)); txtObs.setText(rs.getString(7)); }  
    • By danilo759
      Tenho uma tabelinha de programas para uma rádio... está da seguinte forma.

      titulo
      data (YYYY-MM-DD)
      hora (00:00:00)

      Minha consulta, mas não retorna o programa da hora corrente. O que eu fiz de errado?
      SELECT * FROM programas WHERE data = CURDATE() AND hora = CURTIME() LIMIT 1
    • By Ro_JnR
      Estou tentando a semanas resolver um problema, consumir uma API e verificar se o campo no banco está vazio, se estiver faz insert se não faz update.
      Até aí tudo bem, agora não consigo passar do meu select para o banco, ele da erro.
       
      Segue o código:
       
      <?php

          require_once("db.class.php");
          
          $url = "https://servicodados.ibge.gov.br/api/v1/localidades/distritos";
              $ch = curl_init($url);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              $resultado = json_decode(curl_exec($ch));
              foreach ($resultado as $cidades) {
                  $nome = $cidades->nome;
                  $stmt = $conn->prepare("SELECT name FROM cidades WHERE name=?");
                  $stmt->bind_Param(':name', $nome);
                  $stmt->execute();
                  $stmt->bind_result($resultSelect);
                  $stmt->fetch();
                  if(!$stmt->execute()){
                      print_r($stmt->errorInfo());
                  }
              } 

      ?>
       
      Código do banco:
       
      $conn = new PDO("mysql:host=localhost;dbname=exercicio", "root", "");
      //"sqlsrv:Database=dbphp7;server=localhost\SQLEXPRESS;ConnectionPooling=0", "sa", "root");
      $stmt = $conn->prepare("SELECT * FROM cidades ORDER BY nome");
      $stmt->execute();
      //fetchALL basicamente faço while do mysqli
      $results = $stmt->fetchALL(PDO::FETCH_ASSOC);
       
      Print do erro:

       
      Tenho um outro exercicio que fiz bem parecido, consumi a API de estados e inseri no banco de dados, esse funcionou normalmente.
      Alguém poderia me dar uma luz, não sei mais o que fazer.
      Era para ser simples rsrsrrs.
    • By asacap1000
      Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam?
      Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE.
      Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer. 
×

Important Information

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