2013-06-29 93 views
1

我試圖通過內部連接從兩個表中獲取數據。我可以選擇數據並使用foreach循環將其打印出來,但我得到了多組相同的數據。內部連接查詢返回相似的數據集

這是我的SQL語句

SELECT workout.*, exercise.ExerciseName, exercise.Sets, exercise.Reps, exercise.Weight 
FROM workout 
INNER JOIN exercise 
ON workout.WorkoutID = exercise.WORKOUTID 
WHERE workout.WorkoutID = 1 

它帶回WorkoutID,用戶名,WorkoutName,&說明三次儘管它是相同的信息。我認爲這是因爲練習名,套,代表,&重量是每個不同。當我循環播放數據以回顯數據時,這會產生問題,因爲它會將數據打印出3次,每次不同的練習一次。

如何獲得WorkoutID,UserID,WorkoutName,&說明一次並繼續獲取不同的ExerciseName,Sets,Reps,& Weights。如果那甚至是可能的。

謝謝。

+0

那麼,如果該行包含相同的數據,並且您想顯示無法彙總的字段,那麼除非我沒有正確回答您的問題,否則沒有多少事要做。 – ApplePie

+0

因此,在返回數據時需要將數據回顯出來,只需要獲取鍛鍊名稱和描述,然後循環訪問所有其他數據? – Somebody

+0

是的。您必須爲每個鍛鍊編號循環每次鍛鍊的細節。 – ApplePie

回答

0

你怎麼想看看WorkoutID, UserID, WorkoutName, & Description只有一次,如果您的用戶連接到3個exercices有3種不同重量(糾正我,如果我誤解了問題)

如果權重都是一樣的,你想看到信息一次,就可以添加下面的命令: 選擇DISTINCT [...]

+0

我已經放棄了權重表,所以我們可以忽略它。我想要展示的是:板凳按3組10次。蹲5次5套。例如,這將全部連接到鍛鍊1。 – Somebody

+0

請給我們的字段和值的列表,這將是更容易理解您的需求:)做這個查詢工作? 'select exercise.ExerciseName,exercise.Sets,exercise.Reps from exercise WHERE WorkoutID = 1' – Pascamel

0

總結我的意見作爲一個答案:

當你有一個包含有關類似細節的單一實體的信息多行在這種情況下的鍛鍊,沒有分組pos sible刪除重複的鍛鍊ID和用戶ID將永遠是相同的。你想要做的是迭代每個id的結果。