繁体   English   中英

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

[英]Select from two or more sql tables where have some column names

我有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|
+----+------+-----+------+

当管理员在他的服务器上添加新电影时,他选择new =1。因此,如果客户端转到新电影页面,我想从new ='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");

使用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  |
+----+------+-----+------+-------+

您必须使用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

您可以在表之间运行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    |
+----+------+-----+------+----------+

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM