2016-08-17 28 views
0

我有6個表,其中所有列的名稱是相同的。現在我只想選擇那些新='1'的表。從兩個或更多的SQL表中選擇,其中有一些列名

例如:

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 因此,如果客戶去新的電影頁面,我想從所有的表,其中搜索所有電影新='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"); 
+4

您正在尋找'UNION';但如果還不算太晚,我會改變你的表格結構。你不應該需要6個名字完全相同的表;而是創建一個表並添加一個或多個列來區分將在不同表中進行的內容。對於一個簡單的例子:一個「類型」字符串,你可以在其中存儲「3d」,「english」,「hindi」等字符串;一個更好的例子就是一個'movie_types'表,這個'movies'表通過'多對多'關係引用(通過'movie_movie_types'表),允許你表示一個既是「hindi」又是「 3D」。 – Uueerdo

+0

你第一次失敗是因爲如果只有一個表得到'新'記錄,其他人將沒有新記錄並且什麼也不返回,因爲'和'要求條件在所有檢查中都是真的,而不是一個。也許你想要'或'而不是。但即使如此,你正在做一個笛卡爾產品加入的表格,你會得到各種令人毛骨悚然的結果。第二個失敗,因爲'新'不是唯一的標識符。 –

+0

另外,爲什麼有'date'字段保存十進制值? – Uueerdo

回答

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

選擇使用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 | 
+----+------+-----+------+-------+ 
0

您可以在您的表中運行SQL查詢來獲取y我們期望的輸出。然而,如果你能改變你的表格結構,更好的解決你的問題。您可以簡單地添加另一列(如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 | 
+----+------+-----+------+----------+ 

這樣你就不必添加新表,如果你有一個新的電影類型。

相關問題