MySQL select语句,跨1个列匹配的2个表进行查询

时间:2012-10-10 14:07:01

标签: mysql join

我有以下MySQL

    $tutorial = $database->query(
        'SELECT ' . 
            'tutorial.*, ' . 
            'apps.*'.
                'FROM ' . 
                    $database->db_prefix . 'tutorial, ' . 
                    $database->db_prefix . 'apps ' . 
                        'WHERE ' .
                            'apps.title = "' . $name . '" AND apps.id = tutorial.app AND tutorial.relation = "' . $user['id'] . '"'
    );

我想得到apps.title等于$ name的行,然后根据检索到的应用ID获取所有教程。这充当了两个表之间的链接。

以上是否有效?

特别是:

'apps.title = "' . $name . '" AND apps.id = tutorial.app AND tutorial.relation = "' . $user['id'] . '"'

2 个答案:

答案 0 :(得分:0)

不,它不会起作用。请参阅Mysql JOIN语法。

答案 1 :(得分:0)

  

我想得到apps.title等于$ name的行,然后得到   所有基于检索到的应用程序ID的教程。

根据您在上面发布的查询,我认为您可以JOIN使用app字段SELECT t.* FROM tutorials t INNER JOIN apps a ON t.app = a.app WHERE a.title = $name AND t.relation = $user['id'] 这两个表:

SELECT 
  tutorial.*
FROM tutorial
WHERE toutorial.app IN
(
    SELECT app FROM apps WHERE apps.title = $name AND app IS NOT NULL
) AND tutorial.relation = $user['id'] 

或者:

{{1}}