从两个或多个具有一些列名的sql表中进行选择

时间:2016-08-17 17:04:48

标签: php mysql sql sql-server mysqli

我有6个表,其中所有列名都相同。现在我想只选择那些new =' 1'的表格。

例如:

Table 1: 3d_movie
+----+------+-----+------+
| id | name | new | date |
+----+------+-----+------+
|  1 |name1 | 0   | 10.00|
|  2 |name1 | 0   | 10.00|
|  3 |name2 | 1   | 10.00|
+----+------+-----+------+

Table 2: english_movie
+----+------+-----+------+
| id | name | new | date |
+----+------+-----+------+
|  1 |name1 | 0   | 10.00|
|  2 |name1 | 1   | 10.00|
|  3 |name2 | 0   | 10.00|
+----+------+-----+------+

Table 3: hindi_movie
+----+------+-----+------+
| id | name | new | date |
+----+------+-----+------+
|  1 |name1 | 1   | 10.00|
|  2 |name1 | 0   | 10.00|
|  3 |name2 | 0   | 10.00|
+----+------+-----+------+

当admin在他的服务器上添加新电影时,他选择new = 1。 因此,如果客户转到新电影页面,我想搜索所有新表格中的所有电影=' 1'。

我试过这种方式但它不起作用,请帮帮我..

Tried 1: $result = mysqli_query($db,"SELECT * FROM 3d_movie,english_movie,hindi_movie WHERE 3d_movie.new='1' and english_movie.new='1' and hindi_movie.new='1 ORDER BY date DESC LIMIT 30");

Tried 2: $result = mysqli_query($db,"SELECT * FROM 3d_movie,english_movie,hindi_movie WHERE new='1' ORDER BY date DESC LIMIT 30");

3 个答案:

答案 0 :(得分:2)

选择使用UNION

SELECT *
FROM 3d_movie
WHERE new = 1

UNION

SELECT *
FROM 3d_movie
WHERE new = 1

等等

这是一种简单易用的方式,但在将来你应该考虑将这些表结合起来并添加一列确定电影类型:

Table 1: movie
+----+------+-----+------+-------+
| id | name | new | date | genre |
+----+------+-----+------+-------+
|  1 |name1 | 0   | 10.00|  3d   |
|  2 |name1 | 0   | 10.00|  eng  |
|  3 |name2 | 1   | 10.00|  hin  |
+----+------+-----+------+-------+

答案 1 :(得分:1)

您必须使用UNION构建SQL查询。请尝试以下查询:

SELECT *
FROM 3D_MOVIE
WHERE NEW = 1

UNION

SELECT *
FROM ENGLISH_MOVIE
WHERE NEW = 1

UNION

SELECT *
FROM HINDI_MOVIE
WHERE NEW = 1

答案 2 :(得分:0)

您可以在表中运行SQL查询以获得所需的输出。但是,如果您可以更改表结构,则可以更好地解决您的问题。您可以简单地添加另一列,例如moview_typecategory,而不是保留多个表,并将所有电影列表放在同一个表中。所以你的表格如下所示:

+----+------+-----+------+----------+
| id | name | new | date | category |
+----+------+-----+------+----------+
|  1 |name1 | 0   | 10.00| 3d       |
|  2 |name1 | 0   | 10.00| English  |
|  3 |name2 | 1   | 10.00| Hindi    |
+----+------+-----+------+----------+

这样,如果您有新类型的电影,则无需添加新表。