我目前正在一個項目中,我有信息存儲在幾個表中,都相互連接。我相信表格和列格式是合乎邏輯的,也是最好的選擇。但問題是,我沒有足夠的知識來構建足夠先進的查詢來獲取我需要的所有信息。高級mysql查詢,一次從多個表和行中獲取。加入?
主表是ab_ads,存儲廣告。這些廣告可以分配多種格式(例如250x360,980x120等),您也可以選擇他們應該展示的區域(即斯科訥,斯德哥爾摩,卡爾馬,達拉納,耶姆特蘭等)。
這是我如何存儲我的數據。我沒有顯示所有表格,但我希望這已經足夠。
廣告欄(ab_ads):(有更多的列,但他們不相關)
ID orgnum company_name title content link
1 556664-7524 Company Inc Lorem ipsum Lorem ipsum URL
廣告狀態(ab_ads_states):
ID adID stateID
1 1 2 // Skåne
2 1 5 // Kalmar
3 1 8 // Stockholm
4 1 10 // Värmland
5 2 2 // Skåne
6 2 5 // Kalmar
7 3 8 // Stockholm
8 4 10 // Värmland
廣告格式(ab_ads_formats )
ID adID formatID
1 1 1 // 250x360
2 1 2 // 980x120
3 2 1 // 250x360
4 3 2 // 980x120
格式表(ab_formats)
ID name width height
1 Format 1 250 360
2 Format 2 980 120
所以,我有兩個閃光的旗幟都應該調用PHP腳本這反過來應該與所有的結果提供一個XML文件回。
我知道如何從不同的表格中選擇數據,但我從來沒有從另一個表格中選擇多行並將它們合併爲一個,我想這是我需要在這裏完成的。我非常感謝任何幫助。
Flash橫幅會向PHP文件stateID
和formatID
發送兩個參數。這意味着我必須SELECT ad WHERE state = param AND format = format
。但是由於我存儲了多個廣告狀態條目,因此我不知道如何執行此操作。
編輯: 我也想在查詢中獲取的格式名稱,並讓他們在以下格式:「格式1,格式2」在一個名爲「格式」欄。我想這會需要某種加入?
在此先感謝!
謝謝Kevin!我將「aaf.formatId = formatIdParam」改爲「aaf.formatId IN(1,2)」來試用它。雖然,我注意到如果廣告同時分配了這兩種格式,我會得到兩行。有什麼辦法可以將兩行等列(Format1,Format2)上的列合併成一行,其中列「formats」具有這樣的字符串:「格式1,格式2」? – Jonathan
@Jonathan這是一個更復雜的查詢,稱爲數據透視表。是否有可以返回的最大數量的格式?或者您是否需要它返回可能存在「格式1,格式2,......格式X」的所有格式的列表? – Kevin
最好是後面的選項,因爲格式可能會隨時間而增加。但這取決於是否可能。感謝您花時間幫助我! :) – Jonathan