2012-09-04 61 views
1

我有两个名为User,Holiday的表。 现在我的目标是搜索用户。 我需要从假期表中的用户表或城市的名称中搜索用户。 如果我按名称搜索,则应显示来自假期表的用户表和他的城市的姓名。如果我按城市搜索,则应显示来自假期表的城市和来自用户表的姓名。Mysql select查询不会返回确切结果

用户表::

假期表 enter image description here

我曾尝试以下::

  SELECT * FROM `holiday`,`user` 
      WHERE holiday.UserID=user.UserID 
       and user.Name like '%Bre%' 
       or holiday.City like '%Bre%' 

但:(

回答

2

我想你使用LEFT JOIN,

SELECT user.Name,holiday.City FROM `user` LEFT JOIN `holiday` 
        ON user.UserID =holiday.UserID 
         WHERE (user.Name like '%Bre%' 
         or holiday.City like '%Bre%') 
+0

“左连接”,感谢您的答复。此查询只返回具有'Bre'的城市名称的行。但只要看看用户表中的用户标识4即可。用户的名字是“Breter”。但是他的用户不在假日桌上。这就是为什么它没有显示。但我也需要证明这一点。 – Rounak

+0

去与更新的答案.... –

+0

优秀..非常感谢.. – Rounak

0

不能使用select *因为有有些列在两个表中有相同的名字,例如s用户ID。

试试这个:

SELECT `user`.userID, `user`.Name, `holiday`.city 
FROM `holiday`,`user` 
WHERE holiday.UserID=user.UserID 
     and user.Name like '%Bre%' 
     or holiday.City like '%Bre%' 
+0

它显示用户表中的所有名称。 – Rounak

+0

好吧,对不起,我刚刚发现问题是“哪里...和...或”,你应该使用“(user.Name like'%Bre%'或holiday.City like'%Bre%')” – lotusphp

0

尝试:

 SELECT * FROM `user` left join `holiday` on holiday.UserID=user.UserID 
     WHERE user.Name like '%Bre%' 
      or holiday.City like '%Bre%' 
+0

谢谢回复。此查询只返回具有'Bre'的城市名称的行。但只要看看用户表中的用户标识4即可。用户的名字是“Breter”。但是他的用户不在假日桌上。这就是为什么它没有显示。但我也需要证明这一点。 – Rounak

+0

@Rounak真的,它必须在您的案件 –

0

试试这个:

SELECT 
    * 
FROM 
    `holiday` h 
LEFT JOIN 
`user` u 
ON 
    h.UserID = u.UserID 
WHERE 
    u.Name like '%Bre%' or h.City like '%Bre%' 

注意,给定你的表没有结果返回。

+0

感谢您的答复。此查询只返回具有'Bre'的城市名称的行。但只要看看用户表中的用户标识4即可。用户的名字是“Breter”。但是他的用户不在假日桌上。这就是为什么它没有显示。但我也需要证明这一点。 – Rounak