2016-04-22 42 views
1

我有兩個表,LessonPlans和Images,我想一起使用,但無法使其工作。在LessonPlans中,我將繼續添加越來越多的行,但圖像將只包含10個圖像,稍後將重複。 EI。 LessonPlan1 = image1,LessonPlan2 = image2 ... LessonPLan10 = image10,LessonPlan11 = image1等。爲了使它更好,我只想使用與LessonPlans具有相同語言的圖像。連接兩個表並循環並重復其中一列的列

無論我現在嘗試什麼方式,我都會得到圖像1,重複的次數與我在該字段中的行數相同。我試過的是:

SELECT * FROM 
(SELECT l.Id, l.Subject, l.Language, l.Level, l.Aim, i.`Name-img`, i.`Alt-img` 
    FROM LessonPlans l 
    JOIN Images i 
    ON l.Language = i.Language 
    WHERE l.Language = 'English' 
) a GROUP BY a.Subject ORDER BY a.Id DESC; 

有沒有什麼辦法讓這項工作?

我用的表是:

LessonPlans

Id | Subject | Language | Level | Aim 

圖片

Id | Name-img | Language | Alt-img 
+0

只是一個html示例,它的外觀如下所示:http://webbkurs.ei.hv.se/~hani0008/mlslp/main-mz.html –

+0

您在Images表中沒有'Language'字段。那麼你怎麼做加入? –

+0

如何在圖像(語言)中應用沒有現有字段的連接? –

回答

0

添加列ImageIdLessonPlans表。在插入新數據到LessonPlans時,您還需要根據您喜歡的某種邏輯插入ImageId。 然後,您可以使用此查詢:

select * from LessonPlans l, Images i where l.ImageId=i.Id 

它總是喜歡把所有的邏輯和複雜的地方插入新的數據,因此選擇查詢是最簡單的可能安排一切的一部分。這是因爲在你的情況下,插入是很少見的,並且選擇是在瀏覽器頁面的每一次打開時完成的,所以我們的目標是優化更頻繁的操作,以減少頻繁操作的速度。

如果您正在解決插入率高,選擇率低的問題,那麼邏輯就會反過來。

+0

不會l.Language = i.Language與l.ImageID = i.Id一樣工作嗎?在那裏我已經有了一些結合了兩張桌子的東西。 –

+0

不可以。根據我的理解,您希望將「一個圖像映射到多個教案」,一個圖像可以被多個教案使用,但一個教案只使用一個圖片。 通過使用語言,您將得到「多個圖像到多個教案」的映射。您將在兩個表中具有相同語言的所有行上都有笛卡爾積,因此您將從具有相同課程計劃行的SQL查詢中獲取多行。 – BJovke

+0

好的。所以如果我有每種語言10個圖像(Id 1-10英語,11-20法國等),我可以以某種方式添加ImageId 1-10(甚至可以隨機),當我創建一個英語LessonPlan,它會添加一個圖像正確的,以及重複的圖像,即使我做了10000個新的LessonPlans? –

相關問題