2016-02-16 42 views
2

如果UserID == UserID,在逗號(,)分隔的相同列(在html表中)中是否可以顯示多個值(來自DB中的不同行)? 例如:如果UserID匹配,在單個列中顯示多個值?

數據庫:

UserID | Skills 

    1  java 
    1  python 
    2  SQL 
    1  HTML 

HTML表:

UserID | Skills 

    1  java, python, HTML 
    2  SQL 

UPDATE:由於使用GROUP_CONCAT這樣:

$user_project_sql = "SELECT user.UserID, user.Fname, user.Lname, user.JobRole, GROUP_CONCAT(skills.Description SEPARATOR ', ') as skills 
     FROM user 
     INNER JOIN userprojects ON user.UserID = userprojects.UserID 
     INNER JOIN projects ON userprojects.ProjectID = projects.ProjectID 
     INNER JOIN userskills ON user.UserID = userskills.UserID 
     INNER JOIN skills ON userskills.SkillID = skills.SkillID 
     INNER JOIN usertasks ON user.UserID = usertasks.UserID 
     INNER JOIN tasks ON usertasks.TaskID = tasks.TaskID 
     WHERE tasks.TaskID = '$Task' 
     GROUP BY UserID" 
     or die(mysqli_error($con)); 

我得到的所有技能打印兩次:

UserID | Skills 

     1  java, python, HTML, java, python, HTML 
     2  SQL 
+1

是的,可能的。你需要GROUP_CONCAT來實現這個 –

+0

有很多方法可以做到這一點'GROUP_CONCAT'可能是最快的 – apokryfos

回答

1

嘗試此查詢:

select UserID,GROUP_CONCAT(Skills) as skills from table where UserID='YOU_USER_ID' group by UserID; 
+0

添加用戶ID在選擇 – devpro

+0

哦,是的,謝謝你。 –

+0

默認情況下,'group_concat'將這些字段添加爲逗號,但在這裏您必須提及它,就像我們一樣。 –

1

聽起來像是你想看看GROUP_CONCAThttp://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

我想你可以實現與

SELECT UserID, GROUP_CONCAT(`Skills` SEPARATOR ", ") as `skills` 
    FROM `skillsTable` 
    WHERE `UserID` = ? 
    GROUP BY `UserID` 

的期望的結果如果僅選擇單個用戶標識,則GROUP BY是可選的和不必要的。有用的,如果你的,例如,做WHERE UserID IN (. . .)

+0

感謝您的回覆!自實施您的建議以來,我有一個問題(我希望您可以幫助我);請參閱OP編輯。 – user2258597

1

GROUP_CONCAT(表達式)

該函數返回從一組連鎖的非NULL值的字符串結果。如果沒有非NULL值,它將返回NULL。完整的語法如下:

SQL:

SELECT UserID, GROUP_CONCAT(DISTINCT Skills ORDER BY Skills ASC SEPARATOR ', ') as Skills FROM table 

這是一個查詢,還可以根據技能的字母排序Skills

相關問題