我有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");
答案 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_type
或category
,而不是保留多个表,并将所有电影列表放在同一个表中。所以你的表格如下所示:
+----+------+-----+------+----------+
| id | name | new | date | category |
+----+------+-----+------+----------+
| 1 |name1 | 0 | 10.00| 3d |
| 2 |name1 | 0 | 10.00| English |
| 3 |name2 | 1 | 10.00| Hindi |
+----+------+-----+------+----------+
这样,如果您有新类型的电影,则无需添加新表。