ОШИБКА SQL Когда я соединяю 2 таблицы - PullRequest
0 голосов
/ 23 сентября 2011

Извините, дайте мне пересмотреть. У меня есть три таблицы:

events_year
• EventID
• YearID
• id

Дата
• YearID
• год

Событие
• EventID
• EventName
• EventType

Я хочу вывести запись из трех таблиц следующим образом:

EventName - Год: Марафон - 2008

я связал его с таблицей, называемой "members", которая содержит поле с идентификационным номером (members-id)

, чтобы я мог ограничить результаты членами id = $ un (который является именем пользователя из сеанса)

Мне нужно объединить три таблицы и ограничить результаты конкретной записью идентификационного номера

Вот моя часть кода:

$query =    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";
            "SELECT * FROM Event JOIN events_year ON Event.EventID = events_year.EventID WHERE username = '$un'";
            "SELECT * FROM Date JOIN events_year ON Date.YearID = events_year.YearID WHERE username = '$un'";


$results = mysql_query($query)
    or die(mysql_error());

    while ($row = mysql_fetch_array($results)) {
    echo $row['Year'];
    echo " - ";
    echo $row['Event'];
    echo "<br>";
    }       

Ответы [ 3 ]

4 голосов
/ 23 сентября 2011

уведомления почти самоочевидны.В наборе результатов нет полей 'Year' и 'EventName'.Трудно (или: невозможно) объяснить, почему это происходит, поскольку вы не указали структуру таблицы, но я предполагаю, что: 'Year' - это поле date -таблицы, 'EventName' - это полеevent -table - вы выбираете только из members, поэтому эти поля не встречаются.

Я не понимаю, почему существует три sql-оператора, но только одна присваивается переменной -два других просто стоят там и ничего не делают.Пожалуйста, объясните это и добавьте в свой вопрос больше информации о том, что вы пытаетесь достичь, как выглядит структура вашей таблицы и каков ваш ожидаемый результат.

Я думаю, что вы действительно хотели сделать, это что-то вродеобъединенный запрос, поэтому, пожалуйста, посмотрите документацию , чтобы увидеть, как это работает.

наконец, я думаю, ваш запрос должен выглядеть следующим образом:

SELECT
  *
FROM
  members
INNER JOIN
  events_year ON members.id = events_year.id
INNER JOIN
  Event ON Event.EventID = events_year.EventID
INNER JOIN
  ´Date´ ON ´Date´.YearID = events_year.YearID
WHERE
  members.username = '$un'
0 голосов
/ 23 сентября 2011

запрос $ string использует только первую строку текста:

    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";

, а не остальные.

Сам запрос не возвращает никаких полей, которые называются Year или EventName.

Сделайте var_dump ($ row), чтобы узнать, что возвращается.

0 голосов
/ 23 сентября 2011

Существует ли поле 'Year' в выводе запроса? Я подозреваю, что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...