如何通过引用MySQL

时间:2015-05-23 07:53:34

标签: mysql sql

我有两张桌子。 partactivity。部分有4列。 pid(部分ID),aid(活动ID),uname(用户名)和active。在活动表中有很多行,如aid, aname,adescription等。

我将定义uname。我想检查part表中是否存在该uname,如果存在,请获取aid列等于active的所有1并检查使用aid表格activity并获取所有相应的详细信息,例如anameadescription等。

表格中的数据:

this is how the tables looks like

我无法尝试写出这个问题。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您可以对两个表使用INNER JOIN

SELECT 
  a.*,
  p.uname
FROM activity a
  INNER JOIN part p ON a.aid = p.aid
  AND p.uname = {uname} <-- As you are defining unames -->
  AND p.active = 1

答案 1 :(得分:0)

通过研究您的要求,我觉得您不需要从零件表中输出任何数据。所以,我建议使用&#34;子查询&#34;因为它会更快。如果您需要零件表中的数据,您可能想要进入INNER JOIN。

查询应该使用子查询: -

    SELECT a.* FROM activity a
    WHERE a.aid IN (
    SELECT p.aid FROM part p
    WHERE p.uname = 'donor123' -- Inplace of 'donor123' please use the uname that you are searching for.
    AND p.active = 1
    );

使用INNER JOIN的查询将是: -

    Select a.* FROM activity a INNER JOIN part p
    ON a.aid = p.pid
    AND p.uname = 'donor123' -- Inplace of 'donor123' please use the uname that you are searching for.
    AND p.active = 1;