2017-03-03 23 views
-1

我有一個名爲建議的表,其中包含標題,價格,..和user_id列作爲fk,並且每個建議都有一個或多個存儲在suggestion_images表中的圖片現在如果我想獲得一個單一的建議,與它的照片,我用這個查詢如何加入兩個表,而不產生無用的行

SELECT sg.title , sg.price,sg.detail , sg.created_at , 
     user.name , user.phone , sg_image.url 
    from sg 
    join user on user.id = 16 
    JOIN sg_image on sg_image.sg_id=sg.id 
    where sg.id = 13 ; 

我加入的建議表和USER_TABLE和suggestion_images表我的問題是,如果該建議有3個圖像就會使3排,S具有相同數據只是不同的圖像..所以有什麼辦法可以得到一個單一的建議,它的圖片在一個單一的行?或者我應該單獨查詢它們?或者也許我的數據庫設計是錯誤的?

編輯

這是我的建議表

ID | user_id |標題|價格|詳細信息|完成|活動| track_code | created_at

and this my suggestion_images table

id | url | sg_id

我想建議withs它的圖像,在一排謊言

ID |標題|價格|詳細信息| created_at | url_1 | url_2 | ....

+2

什麼數據庫設計?請將表格創建語句和一些示例數據顯示爲插入數據的語句,即1)顯示您的問題,2)顯示您期望的輸出。如果我想幫助你,我不想在你的描述中設計表格並填充測試數據。你已經擁有了這一切?我不想要一個圖表 - 我想要的代碼我可以導入,複製和粘貼很好,並測試:)我想花費不超過5分鐘的時間創建表並從代碼中加載它們。我有一個SQL IDE和一個完整的測試設置。這是我回答時做的... –

+0

@RyanVincent哥們我更新了我的問題希望它get.s更清晰 –

+2

我可以複製你的表定義嗎它會在Mysql中創建一個表?我可以將您的測試數據插入到該表中嗎?沒有。我知道查詢的期望結果是什麼嗎?沒有。你想幫忙嗎?或者讓我們花時間創建表格並製作測試數據,然後才能開始幫助您。如果不明確。我們大多數人都必須運行這些查詢,並且我們弄錯了他們。然後我們迭代直到我們讓他們去做需要的事情。是的,我們會經歷完全相同的過程。希望更快? –

回答

1
SELECT sg.title , sg.price,sg.detail , sg.created_at , 
     user.name , user.phone , 
     (SELECT GROUP_CONCAT(url) 
      FROM sg_image on sg_id=sg.id) 
    from sg 
    join user on user.id = 16 
    where sg.id = 13 ; 

(你JOINuser比較奇怪。)

+0

坦克我不知道這個答案,但我有2個問題。你認爲用戶加入有什麼錯誤?和小組聯繫使他們都與他們之間的一個(,),但我怎麼能分裂他們? –

+1

'GROUP_CONCAT'爲您提供了一個廣泛的專欄。格式化是應用程序的責任,而不是MySQL,因此您需要使用逗號分隔。 –

+1

'JOIN用戶'很奇怪,因爲它是「交叉連接」。 「ID爲16的所有用戶ID爲13的所有用戶。」 –