1

我有两个分别命名为 liste_pieces 和 client_pieces 的选项卡。

第一个包含大约 1000 个元素的列表。第二个包含第一个的一些元素。

实际上,我正在做一个查询以用第一个选项卡填充第二个选项卡。

我还想显示第一个中不在第二个中的所有元素。

我以为我可以联合起来,因为联合只会显示两个选项卡中的元素。

实际上这不是我想要的。

我暂时完成了该查询

      <table id="box-table-a" width="100%">
    <tr>
        <th scope="col" width="50%">LISTE DES PI&Egrave;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。

4

2 回答 2

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)

另外:我刚刚写了一个非常长的问题和答案,涵盖了这种确切的问题,我希望这将有助于阐明连接如何在表上工作以及如何从数据库中的多个表中获取信息!

于 2012-09-20T07:34:53.803 回答
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应该存在于具有相同数据类型的两个表中。

于 2012-09-20T07:32:15.823 回答