2015-10-29 61 views
0

我在mysql中有两个表,tender_itemsitem_price_add_manual结合两个表,并显示在php中的唯一数据

这两个表格都有字段itemNametender_id。所以,我的要求是我将如何编写一个查询加入这些表格只是在某些itemNames如与显示:

tender_id = 460所以导致PHP有像

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

这可能只是一个查询或我需要操作与PHP脚本?

我想这

有了上面的查询IAM得到如下结果:

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

,但我期待的结果如下:

tender_id | ItemName 
______________________ 
460   Item 1 
460   Item 2 
460   Item 3 
+0

Iam对不起,我也这么做。相对较新的stackoverflow。 :) –

回答

1

好像所有你需要的是一个UNION操作:

(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) 

正如manual说:

工会的默认行为是重复的行从 删除结果。

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

+0

现在是iam接近解决方案。当我尝试上述查询时,实际上tender_items有2条记录。但是当我运行查询它只显示一条记录?我犯了什么错误? –

+0

@SanjuMenon查询返回一个统一的结果集,它将来自*两个表*的值组合起来。无法分辨哪个记录来自哪个表。您可以为此添加一个单独的字段。 –

+0

@SanjuMenon此外,*没有办法*与'SELECT item_name,tender_id FROM tender_items WHERE tender_id = 460'相比,使用'UNION'的查询返回少*行。 –

1
SELECT item_name,tender_id FROM 

((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)) AS T 
GROUP BY item_name,tender_id 
+0

你说得对。我错过了它.'item_price_add_manual_units' - >'item_price_add_manual.units',我猜 –

+0

我已经编辑了你提到的查询问题。请检查它。 –

+0

@德鲁。请参阅最新的编辑。我已经提到了确切的问题。 Iam对此感到抱歉。 –

0

我认为你已经脱颖而出ign键将两个表连接在一起。你不需要链接从一个表到另一个表的所有内容,因为它使事情变得非常复杂并且可能发生错误,使得事情难以调试。你可以看看W3School school tutorial来知道如何SELECT具体。

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