我有两个名为respectly liste_pieces和client_pieces的标签。
第一个包含大约1000个元素的列表。第二个包含第一个元素。
实际上我正在进行查询,用第一个填充第二个标签。
此外,我想显示第一个不在第二个元素中的所有元素。
我以为我可以联合起来联合只会显示两个标签中的元素。
实际上这不是我想要的。
我目前已经完成了该查询
<table id="box-table-a" width="100%">
<tr>
<th scope="col" width="50%">LISTE DES PIÈCES</th>
<th scope="col" width="50%">AJOUT ?</th>
</tr>
<?php $sql="SELECT * FROM `liste_pieces`";
$result=mysql_query($sql) or die;$i=0;
while($data=mysql_fetch_assoc($result))
{?>
<tr>
<td><?php echo $data['libelle'] ; ?></td>
<td style="text-align:center" align="center">
<p align="center"> <input type="hidden" name="piece[<?php echo $i ; ?>]" value="0" /><input type="checkbox" class="checkbox" value="1" name="piece[<?php echo ++$i ; ?>]" id="piece[<?php echo ++$i ; ?>]" /></p></td>
</tr>
<?php } ?>
但是这显示了第一个标签中的所有元素。我真的不知道如何删除第二个标签中存在的元素。
我在liste_pices上的列id在第二个标签中是相同的,除了它被称为id_piece。
我有点失落。
我不知道如何处理。
尽最大的尊重。
亲切的问候。
SP。
答案 0 :(得分:1)
此查询应该为您完成。是的,这是您要求的联接查询:
select
a.col1,
a.col2,
b.col1 // etc
from
liste_pieces a
join client_pieces b
on a.id=b.id_peice
where b.id_piece is null
以下是我的数据库中的一个示例:
mysql> select id, brand from cars;
+----+-------+
| id | brand |
+----+-------+
| 1 | 2 |
| 2 | 1 |
| 3 | 3 |
| 4 | 4 |
| 5 | 2 |
| 6 | 5 |
| 7 | 1 |
| 8 | 2 |
| 9 | 2 |
| 10 | 5 |
| 11 | 2 |
+----+-------+
11 rows in set (0.00 sec)
mysql> select id, brand from brands;
+----+--------+
| id | brand |
+----+--------+
| 1 | Ford |
| 2 | Toyota |
| 3 | Nissan |
| 4 | Smart |
| 5 | BMW |
| 6 | Holden |
+----+--------+
6 rows in set (0.00 sec)
select
a.brand
from
brands a
left join cars b
on a.id=b.brand
where
b.brand is null
+--------+
| brand |
+--------+
| Holden |
+--------+
1 row in set (0.00 sec)
另外:我刚写了一篇非常冗长的问题和答案,其中涵盖了这个sort of question,我希望这有助于澄清联接如何在表上工作以及如何从数据库中的多个表中获取信息!
答案 1 :(得分:0)
使用像这样的查询
"select * from liste_pieces where column_name not IN (select column_name from client_pieces)"
和
"select * from client_pieces where column_name not IN (select column_name from liste_pieces )"
这将解决您的问题,column_name
应该出现在具有相同数据类型的两个表中。