0

我有以下 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'] . '"'
4

2 回答 2

0

不,这行不通。请参阅 Mysql JOIN语法。

于 2012-10-10T14:08:55.330 回答
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'] 
于 2012-10-10T14:11:33.483 回答