2012-04-19 55 views
-1

我有以下表格:加入3个表,而不用嵌套查询

CREATE TABLE `orders` (
    `ID` varchar(5) NOT NULL, 
    `IDUserProfile` int(11), 
    `IDRestaurant` int(11), 
    `Date` int(11), 
    PRIMARY KEY (`ID`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 

    CREATE TABLE `userprofiles` (
    `ID` int(11) NOT NULL auto_increment, 
    `IDUser` int(11) NOT NULL, 
    `Name` varchar(64), 
    `Phone` varchar(64), 
    `Address` varchar(255), 
    PRIMARY KEY (`ID`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 

    CREATE TABLE `users` (
    `ID` int(11) NOT NULL auto_increment, 
    `Username` varchar(64) NOT NULL, 
    `Password` varchar(33) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

我需要做到以下几点:

显示所有记录表的订单要显示USERPHONE 要显示的用户名 要根据日期订购结果(来自订单)

如果没有用户名与订单链接,我应该在结果中显示空值。和电话一样。 我想这样做没有嵌套查询...

任何帮助将不胜感激。

+0

你有没有尝试过,或者你不确定如何开始? (通过改进你的解决方案,通常比从头开始写一个新的解决方案更容易,此外,你和其他人可能会学到更多的方法。) – Wiseguy 2012-04-19 17:20:30

回答

0
select o.*, 
    up.Phone, 
    u.Username 
from orders o 
left outer join userprofiles up on o.IDUserProfile = up.ID 
left outer join users u on up.IDUser = u.ID 
order by o.Date 
+0

感谢队友......像一个魅力 – Zoran 2012-04-19 17:36:47