Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL等于一个id和两个不同的id_Php_Mysql - Fatal编程技术网

Php MYSQL等于一个id和两个不同的id

Php MYSQL等于一个id和两个不同的id,php,mysql,Php,Mysql,我有两张桌子: 教授 考试 我想用以下内容显示所有考试: $sqll = "SELECT * FROM exam, professor WHERE id_prof=id_prof1 AND id_prof = id_prof2 " ; $result = mysqli_query($link,$sqll); while($rows=mysqli_fetch_array($result,MYSQLI_BOTH)) {

我有两张桌子:
教授

考试

我想用以下内容显示所有考试:

 $sqll = "SELECT * FROM exam, professor WHERE id_prof=id_prof1 AND id_prof = id_prof2 " ;
                $result = mysqli_query($link,$sqll);

            while($rows=mysqli_fetch_array($result,MYSQLI_BOTH)) {

                <tr>
                    <td><?php echo $rows['numep']." ".$rows['prenumep']; ?></td> 
                    <td><?php echo $rows['numep']." ".$rows['prenumep']; ?></td> 

                </tr> 

            }
$sqll=“从考试中选择*教授,其中id\u prof=id\u prof1和id\u prof=id\u prof2”;
$result=mysqli\u查询($link,$sqll);
而($rows=mysqli\u fetch\u数组($result,mysqli\u两者)){
}
它没有显示任何东西。但如果我删除其中一个
id\u prof=id\u prof1
或另一个,它只显示一位教授。我应该怎么做才能让他们都看出来?我想在期末考试时有教授助理等展示。教授和助教分别为prof1和prof2 si。在这里,我只说了一部分,因为只有这个不起作用

SELECT * FROM exam, professor WHERE id_prof=id_prof1 AND id_prof = id_prof2
你在找一个女巫的身份证,在一个“考试”表格里,你有类似的东西

id_ex  id_prof1     id_prof2   
   1        1             1
   2        3             3
等等

将查询更改为:

SELECT * FROM exam, professor WHERE id_prof=id_prof1 OR id_prof = id_prof2

理想情况下,您应该对
professor
表执行两次
left join
,以获取数据,如果删除了一些professor数据,结果中将显示为null,如下所示:

select 
e.id_ex,
p1.numep as numep1,
p1.prenumep as prenumep1,
p2.numep as numep2,
p2.prenumep as prenumep2
from exam e
left join professor p1 on p1.id_prof = e.id_prof1
left join professor p2 on p2.id_prof = e.id_prof2

您使用的是
,因此您只需要id\u prof1和id\u prof2字段具有相同值的记录。请尝试使用
。请在问题中添加您想要的输出…为什么使用
加入
?我认为
union
更好。没有join就没有。当你在
exam
表中有ID时,你如何从
prefessor
表中知道
numep
prenumep
呢?你说得对。。!还有一个问题:为什么使用
join
。现在它只是内部连接,这意味着两个表中都必须有匹配的记录。假设从professor表中删除了一位教授,进行内部联接将不会显示具有该教授id的行,因此左联接,因此即使删除了教授,我们也会从考试表中获取数据,如果professor表中没有教授数据,则返回空值。哇,明白了。。。!事实上,我有两个字典表,想在其中搜索,现在你有什么建议??在单词排序中,我想在
表1
中搜索一个单词,然后在
表2
中搜索同一个单词<代码>联合所有或
加入
SELECT * FROM exam, professor WHERE id_prof=id_prof1 OR id_prof = id_prof2
select 
e.id_ex,
p1.numep as numep1,
p1.prenumep as prenumep1,
p2.numep as numep2,
p2.prenumep as prenumep2
from exam e
left join professor p1 on p1.id_prof = e.id_prof1
left join professor p2 on p2.id_prof = e.id_prof2