Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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显示唯一的数据_Php_Mysql - Fatal编程技术网

合并两个表并用php显示唯一的数据

合并两个表并用php显示唯一的数据,php,mysql,Php,Mysql,我在mysql中有两个表,投标项目和项目价格添加手册 这两个表都有名为itemName和tender_id的字段。因此,我的要求是如何编写查询来连接这些表,并仅显示某些itemName,例如: 投标编号=460。因此,php中的结果如下 tender_id | ItemName ______________________ 460 Item 1 460 Item 2 460 Item 3 tender_id | ItemName _

我在mysql中有两个表,投标项目和项目价格添加手册

这两个表都有名为itemName和tender_id的字段。因此,我的要求是如何编写查询来连接这些表,并仅显示某些itemName,例如:

投标编号=460。因此,php中的结果如下

 tender_id | ItemName
 ______________________
 460         Item 1
 460         Item 2
 460         Item 3
 tender_id | ItemName
 ______________________
 460         Item 1
 460         Item 2
 460         Item 3
这是可能的只是一个查询,还是我需要用php脚本操作

我试过这个

    SELECT tender_items.item_name,
   tender_items.tender_id,
  item_price_add_manual.item_name,
  item_price_add_manual.tender_id
  FROM tender_items INNER JOIN item_price_add_manual ON     tender_items.tender_id=item_price_add_manual.tender_id WHERE tender_items.tender_id=460
通过上述查询,iam得到如下结果:

 tender_id | ItemName  | tender_id   |   ItemName
 __________________________________________________
 460         Item 1      460           Item 3
 460         Item 2      460           Item 3
但我预期的结果如下:

 tender_id | ItemName  | tender_id   |   ItemName
 __________________________________________________
 460         Item 1      460           Item 3
 460         Item 2      460           Item 3

我假定您有一个外键,它将两个表链接在一起。您不需要将所有内容从一个表链接到另一个表,因为这会使事情变得非常复杂,并且可能会发生错误,从而使事情难以调试。您可以查看以了解如何具体选择

$query = "SELECT * FROM tender_items, item_price_add_manual WHERE tender_items.tender_id = item_price_add_manual.tender_id AND tender_id = 460";

看起来你所需要的只是一个联合行动:

(SELECT item_name, tender_id
FROM tender_items 
WHERE tender_id=460)

UNION 

(SELECT item_name, tender_id
FROM item_price_add_manual 
WHERE tender_id=460)
如合同所述:

UNION的默认行为是从中删除重复的行 结果呢


因此,您对不同值选择的要求也将得到满足。

对不起,我也这么做了。stackoverflow相对较新:你是对的。我错过了。项目价格添加手动单位->项目价格添加手动单位,我想我已经用你提到的查询编辑了这个问题。请检查一下。@Drew。请看最新的编辑。我已经提到了确切的问题。“对此我很抱歉。”德鲁兄弟->该怎么办。。我已经编辑了答案是的,我现在接近解决方案了。当我尝试上述查询时,实际上投标项目有2条记录。但是当我运行查询时,它只显示一条记录?我犯了什么错误吗?@SanjuMenon查询返回一个统一的结果集,将两个表中的值组合在一起。无法区分哪些记录来自哪个表。您可以为此添加一个单独的字段。@SanjuMenon同样,与SELECT item_name,tender_id FROM tender_items(其中tender_id=460)相比,UNION查询返回的行数不可能少。@Giorgos,当我运行SELECT语句SELECT item_name,tender_id FROM tender_items(其中tender_id=460)时,它显示了2条记录。但这两张唱片的名字相同。是否排除了重复项?@SanjuMenon我想我在回答中已经明确表示,任何重复项都会被我的查询过滤掉。我认为这是你的意图,你在问题的主题中提到了独特的数据。如果您也希望返回重复项,那么只需将UNION替换为UNION ALL即可。