【问题标题】:Could i merge this two select query in one?我可以将这两个选择查询合并为一个吗?
【发布时间】:2017-07-09 09:44:26
【问题描述】:

我的目标是在右侧部分显示/显示调查的问题(来自我的数据库表),并在左侧部分显示/显示来自客户的答案(来自我数据库中的另一个表)。所以我的问题是:如何合并这两个选择查询?我做了一些研究,但是对于 php,理解起来有点棘手,而且我对 php 也还是新手。 欢迎任何帮助或建议。

最好的问候 A.V.

<?php
    include("bdconnect_Foredeck.php");
    $link=mysqli_connect($host,$login,$pass,$dbname);

    if(isset($_POST["bouton55"])){
        $link = mysqli_connect($host,$login,$pass,$dbname);  

        $id = $_REQUEST["Zoubi"];
        $ClientRef =$_REQUEST["KGB"];

        $rechercheq = "SELECT Qref,Ref,Question FROM questionnaire WHERE Qref ='$id' ";
        $recherche= "SELECT choix,commentaire FROM reponse WHERE RefQ ='$id' and ref_Client ='$ClientRef'";

        mysqli_query($link,$recherche);
        mysqli_query($link,$rechercheq);

        $result1=mysqli_query($link,$rechercheq); 
        $result= mysqli_query($link,$recherche);

        while($row = mysqli_fetch_assoc($result,$result1)){
            $Ref =$row["Ref"];
            $Question       =$row["Question"];
            $Choix =$row["choix"];
            $Commentara =$row["commentaire"];

            echo" <tr bgcolor=\"white\">
            <td>  $id  </td>
            <td> $Ref </td>
            <td>$Question </td>
            <td>$Choix       </td>
            <td>$Commentara         </td>
            </tr>";
        }
    }
?>

【问题讨论】:

  • 您正在执行每个查询两次,只存储第二次结果。

标签: php mysql select merge


【解决方案1】:

你可以使用 JOIN

    SELECT a.Qref, a.Ref,a.Question , b.choix, b.commentaire
    FROM questionnaire as a 
    LEFT JOIN reponse as b ON  a.RefQ = b.RefQ
    WHERE a.Qref ='$id' 
    AND b.ref_Client ='$ClientRef'

如果你有重复的行..那么你可以使用不同的

    SELECT DISTINCT a.Qref, a.Ref,a.Question , b.choix, b.commentaire
    FROM questionnaire as a 
    LEFT JOIN reponse as b ON  a.RefQ = b.RefQ
    WHERE a.Qref ='$id' 
    AND b.ref_Client ='$ClientRef'

否则你的逻辑不允许单个查询

【讨论】:

  • 在您评论的第 3 行,您确定我必须放一个 " ; 吗?或者它可能在第 5 行的 '$ClientRef' 之后?@scaisEdge
  • 警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值在 C:\wamp\www\Foredeck\foredeck_searchclient.php 第 65 行给出:while($row = mysqli_fetch_assoc($result,$result1)){
  • 有一个错字.. 答案已更新.. 让我知道.. 如果条件不匹配,则将内部联接更改为左联接
  • [Err] 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'a.RefQ = b.RefQ WHERE a.Qref ='mc2' AND b.ref_Client ='mk1'' 附近使用正确的语法我做了一个测试值“mk1”和“mc2”,但它不起作用。
  • 我现在唯一的问题是我有一些重复的显示。你能加我或Skype然后我可以卖给你我的数据库的sql文件,看看发生了什么?
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 2015-01-29
  • 2012-12-14
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
相关资源
最近更新 更多