合并两个表并用php显示唯一的数据
我在mysql中有两个表,投标项目和项目价格添加手册 这两个表都有名为itemName和tender_id的字段。因此,我的要求是如何编写查询来连接这些表,并仅显示某些itemName,例如: 投标编号=460。因此,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 _
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即可。