-3

我正在尝试使用 PHP 访问 MySQL 数据库。我需要从我的表中检索 6 个值,actor_id在 html 表中显示它们。我的 SELECT 语句是:

SELECT actor_id.actor_name, FROM actor_id WHERE movie.star1 = actor_id.actor_id;

现在我怎样才能添加另一个movie.star2、movie.star3等??

数据库结构

名称 - 字段电影 - movie_id 标题 star1 star2 actor_id - actor_id actor_name

4

4 回答 4

2

看起来,您实际上在这里使用了两个表。但是,您的查询仅引用其中之一。

我认为你需要这样的东西:

SELECT 
    actor_id.actor_name, 
FROM 
    actor_id 
        join movie
            on movie.star1 = actor_id.actor_id
            or movie.star2 = actor_id.actor_id
            or movie.star3 = actor_id.actor_id
            -- etc etc

不过,在这一点上,您可能会很好地阅读我写的这篇冗长的问答,以更详细地解释这些事情。

于 2013-08-30T11:07:06.480 回答
1

正如我在评论中所说,这很容易(如果您阅读手册):

SELECT field1, field2, field3 AS altName, lastFieldNoCommaHere
    FROM table
WHERE someField = 'value'
  AND id IN (1,2,3,4,5,6,7,8,9)
  AND (dateField > NOW()
       OR dateField IS NULL);

RTM 并且不使用mysql_*扩展,它已被弃用。使用PDOor mysqli_*,不仅仅是因为弃用问题,而是出于各种原因

当您在 where 子句中使用movie.star1,您也应该查看语法JOIN

SELECT actor_id.name 
FROM actor_id
    LEFT JOIN movie
       ON movie.star1 = actor_id.actor_id
WHERE actor_id.actor_id IN (1,2,4,5,6,7,8,123);

那可能就是您所追求的,或者可能是:

SELECT actor_id.name
FROM actor_id
WHERE actor_id.actor_id
          IN ( SELECT movie.star1
                  FROM movie
                  WHERE movie.release_date >= '2012-01-01');

这是子查询的示例。小心这一点,因为它通常很慢......
正如 Fluffeh 向我指出的那样,你不能选择多个值,而不得不求助于这样的东西:

SELECT actor_id.name
FROM actor_id
WHERE actor_id.actor_id
          IN ( SELECT IFNULL(movie.star1, IFNULL(movie.star2, movie.star3))
                  FROM movie
                  WHERE movie.release_date >= '2012-01-01');

或者:

SELECT actor_id.name
FROM actor_id
WHERE actor_id.actor_id
          IN ( SELECT IF (movie.star1 <= 12,
                          IF (movie.star2 <= 15,
                              movie.star3,
                              movie.star2),
                          movie.star1)
                  FROM movie
                  WHERE movie.release_date >= '2012-01-01');
于 2013-08-30T11:10:43.497 回答
0

使用 or 语句。我不知道你的数据库结构,但应该看起来像这样,或者:

SELECT actor_id.actor_name,
FROM actor_id 
WHERE (movie.star1 = actor_id.actor_id or movie.star2 = actor_id.actor_id);
于 2013-08-30T11:01:32.527 回答
0
SELECT actor_id.actor_name
FROM actor_id WHERE actor_id.actor_id in [specify the values like movie.star2, movie.star3... etc];

但不能在 FROM .. 之前使用逗号

于 2013-08-30T11:07:19.507 回答