【问题标题】:Using search in mysql multiple tables在mysql多个表中使用搜索
【发布时间】:2013-11-14 11:15:14
【问题描述】:

我有两个表用户和卖家,其中 user_id 和 Seller_id 不同。我想比较卖家和用户的名字和姓氏的搜索查询并得到结果。这两个表没有与之关联的外键,并且在卖家表上它只是卖家名称。没有名字或姓氏。

SELECT *
FROM users
WHERE first_name LIKE "%'.$search_string.'%"
OR last_name LIKE "%'.$search_string.'%"

这适用于用户表..如何将其与卖家表连接?

我想从用户表中获取 user_id、first_name、last_name。从sellers 表中我想得到seller_id、seller_name。

【问题讨论】:

  • LIKE "%'.$search_string.'%" 看起来不太对劲。我想引号和双引号应该交换。
  • 好的。但查询有效。它只是加入它以获取卖家详细信息是问题
  • 请不要重复发布相同的问题。stackoverflow.com/questions/19754965/…
  • 这不是同一个问题。前一个在两个表中有公共字段,而这个没有:)
  • 听起来更像是对您上一个问题的编辑..

标签: mysql select search


【解决方案1】:

我不太明白你想要完成什么,因为你没有提到是否有一个可连接的字段,例如交易 ID,来关联用户和卖家。

如果您只搜索主题与搜索字符串匹配的任何用户行或卖家行,您可以尝试使用

SELECT 'users' as origin, CONCATENATE('first_name',' ','last_name') as name
FROM users
WHERE (first_name like '%".$search_string."%' OR  last_name like '%".$search_string."%')

UNION

SELECT 'sellers' as origin, seller_name as name
FROM sellers
WHERE ( seller_name like '%".$search_string."%')

请记住,如果您删除 'origin' 列,UNION 语句将对结果集执行隐式 DISTINCT。如果您需要显示重复结果,那么您应该使用 UNION ALL。

【讨论】:

  • 嗨。谢谢。是否可以将 user_id 作为 user_id,将 Seller_id 作为 Seller_id? ——
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 2015-08-30
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
相关资源
最近更新 更多