首页 > 解决方案 > 正确合并查询 SQL

问题描述

我有三张桌子USERS,,,BOOKMARKS_PRODUCTSPRODUCTS

我需要从USERS表中,通过选择用户ID,在BOOKMARKS_PRODUCTS表中找到,从PRODUCTS表中,跨PRODUCTS_ID字段在BOOKMARKS_PRODUCTS表中找到,找到表中的所有产品PRODUCTS

SELECT U.USER_NAME, U.USER_EMAIL, U.USER_PHONE, U.USER_AVATAR, U.ABOUT
FROM USERS AS U
WHERE U.USER_ID = '${user_id}'
SELECT B.PRODUCT_ID
FROM BOOKMARKS_PRODUCTS AS B
WHERE B.USER_ID = '${user_id}'
SELECT P.*
FROM PRODUCTS AS P
WHERE P.PRODUCT_ID = '${product_id}'

请帮助我正确地做到这一点。

标签: sqlpostgresql

解决方案


您可以在查询中使用 JOIN 从不同的表中获取数据。

SELECT U.USER_NAME, U.USER_EMAIL, U.USER_PHONE, U.USER_AVATAR, U.ABOUT, B.PRODUCT_ID, P.* 
FROM USERS AS  U 
INNER JOIN BOOKMARKS_PRODUCTS AS B ON B.USER_ID = U.USER_ID -- OR '${user_id}'
INNER JOIN PRODUCTS AS P ON P.PRODUCT_ID = B.PRODUCT_ID -- OR '${product_id}'
WHERE U.USER_ID = '${user_id}'

如需更多参考,请参阅


推荐阅读