Внутреннее объединение без дубликатов записей - PullRequest
2 голосов
/ 15 сентября 2011

У меня есть две таблицы (таблица вопросов и таблица ответов).

Таблица вопросов

id question
1  what is your name?
2  how old are you?

Таблица ответов

id  answer  questionid
1   john     1
2   smith    1
3   waiyan   1
4   20       2
5   21       2
6   22       2

Когда я выбираю записи, результаты следующие.

SELECT * FROM question INNER JOIN answer on questionid= question.id

what is your name?
john
what is your name?
smith
what is your name?
waiyan
how old are you?
20
how old are you?
21
how old are you?
22

Я хочу удалить дублирующую формулировку вопроса.Я хочу получить следующее.

What is your name?
John
smith
waiyan  

how old are you?  
20 
21    
22

Пожалуйста, Кто-нибудь, помогите мне, как написать это.Я действительно новичок в MySQL.Извините за плохое использование английского языка.

1 Ответ

2 голосов
/ 15 сентября 2011

Проблема в вашем php-коде, а не в выражениях MySQL. Вам нужно распечатать вопрос только тогда, когда он отличается от предыдущего вопроса. Есть много способов сделать это. Помните, что в вашем SQL-запросе вам нужно будет сделать:

SELECT * FROM question INNER JOIN answer 
    on questionid= question.id 
    order by question.id

Чтобы быть уверенным, что ответы на один и тот же вопрос не повторяются. Затем сделайте что-то вроде следующего (спасибо @drrcknlsn за исправление моей попытки PHP):

$last_question = "";
foreach ($results as $row) {
    if ($last_question !== $row["question.question"]) {
        echo $row["question.question"];
    }
    echo $row["answer.answer"];
    $last_question = $row["question.question"];
}
...