php - 我将如何在一个查询中加入这两个查询?

标签 php mysql sql database-design

我有第一个查询。

SELECT item.id, item.name, item.description, 
       item.tnURL, item.spec_id, item.item_type, item.sub_category  
FROM item, fb_item_promo 
WHERE fb_item_promo.item_id=item.id;

和第二个查询。

SELECT item.id, item.name, item.description, 
       item.tnURL, item.spec_id, item.item_type, item.sub_category  
FROM item 
WHERE item.description LIKE '%package%';

我需要合并第一个查询结果和第二个查询结果。我怎样才能更快地做到这一点?

@Fosco 您的查询似乎有效,但如果我想为 item.name 上的所有结果添加搜索功能怎么办?我尝试了这个,但它仍然获得所有 fb_item_promo.item_id 结果。

新查询:

SELECT item.id, item.name, item.description, item.tnURL,item.spec_id, 
 item.item_type, item.sub_category 
FROM item 
LEFT JOIN fb_item_promo 
ON fb_item_promo.item_id = item.id 
WHERE fb_item_promo.item_id IS NOT NULL 
OR item.description LIKE '%package%' 
AND item.name LIKE '%my item name%'

结果是它搜索正确的项目,但仍然返回 fb_item_promo.item_id 上存在的所有项目。我如何对该结果运行过滤器?

最佳答案

包含第一个查询的所有记录以及第二个查询的记录是没有意义的。来自第二个查询的记录将已经包含在第一个查询中。

我想这就是你需要的:

SELECT item.id, item.name, item.description, 
       item.tnURL, item.spec_id, item.item_type, 
       item.sub_category 
FROM item
left JOIN fb_item_promo ON fb_item_promo.item_id=item.id
WHERE fb_item_promo.item_id is not null
  or item.description LIKE '%package%'

关于php - 我将如何在一个查询中加入这两个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129782/

相关文章:

MySQL ManyToMany 显示重复行

mysql - 在具有一对多关系的左侧选择行

php - pg_prepare : cannot insert multiple commands into a prepared statement

php - 如何同时使用 websocket 和推送通知

javascript - 使用 javascript 显示某个套餐的值(value)(价格)

javascript - 使用 XML/SQL 标记将集群添加到 Google Map

sql - PostgreSQL 3 表连接乘法

php - 社交网络 - 收集转发帖子的最佳策略是什么

php - 使用 PHP 从 mysql db 中选择并回显单个字段

php - Codeigniter- 函数总是返回 null