子查询mysql从三个表中获取相关数据

时间:2014-02-22 09:42:33

标签: mysql subquery

我从3个表中获取相关数据。

useracc包含details列中订单ID的用户帐户交易。这是查询在details列中查找'gift%'的基本表...

"SELECT * FROM `useracc` WHERE `details` LIKE 'gift%' ORDER BY `id` DESC"

现在,我想从details列中的这些结果中获取订单ID,该列以“礼品订单ID:245”的形式给出。我想要这个245并运行另一个查询以在第二个表中查找245,即transaction。 我想在表senderemail中获取列transaction,其中列orderid为245.假设返回abc@abc.com

现在在第三个表格中users我想找到与该电子邮件相关的用户名。 我想运行查询来获取表username中的usersuseremail,其中{{1}}是abc@abc.com。

此用户名将显示在包含第一个查询结果的表格格式的每一行

如何使用子查询执行此操作。请帮忙

1 个答案:

答案 0 :(得分:0)

SELECT u.username, ua.*
FROM useracc AS ua
JOIN transaction AS t ON ua.details = CONCAT('gift order id:', t.id)
JOIN users AS u ON u.useremail = t.senderemail
WHERE ua.details LIKE 'gift order id:%'
ORDER BY ua.id DESC

WHERE子句不是绝对必要的,因为它对ON条件是多余的。但它可能会加快查询速度 - 无论有没有尝试,看看哪个更快。