Запрос отображает только первую запись в таблице - неправильно! - PullRequest
1 голос
/ 27 августа 2009
$query = "SELECT A.Agent_Name, C.Country_Name, J.Job_Type FROM Line_Items LI, Agents A, 
          Country C, Job J WHERE LI.Agent_ID = 1 AND LI.Agent_ID = A.Agent_ID AND 
          LI.Country_ID = C.Country_ID AND LI.Job_ID = J.Job_ID";
$result = mysql_query($query);
while($row = mysql_fetch_query($result)) {
    echo "Agent:" . $row['Agent_Name']."<br>";
    echo "Country:" . $row['Country_Name']."<br>";
    echo "Job:" . $row['Job_Type']."<br>";
}

В этом запросе выводится только первый агент в таблице AGents, а также в таблице "Страна" и в таблице заданий ... Я хочу вывести соответствующее имя агента, название страны и тип задания из этих таблиц на основе записей в позициях. стол.

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Попробуйте использовать mysql_fetch_array вместо:

while($row = mysql_fetch_array($result)) {
    echo "Agent:" . $row['Agent_Name']."<br>";
    echo "Country:" . $row['Country_Name']."<br>";
    echo "Job:" . $row['Job_Type']."<br>";
}
0 голосов
/ 27 августа 2009

Я полагаю, что проблема заключается в том факте, что вы пытаетесь получить значения в SQL, к которым у вас нет доступа в одном / простом операторе SELECT. Вы должны использовать оператор JOIN для того, что вы пытаетесь - извлекать данные из одной или нескольких таблиц на основе общих данных столбца между двумя или более таблицами. Быстрая попытка вашего SQL:

SELECT A.Agent_Name, C.Country_Name, J.Job_Type FROM Line_Items LI INNER JOIN 
( Agents A CROSS JOIN Country C CROSS JOIN Job J ) ON
( LI.Agent_ID = 1 AND 
LI.Agent_ID = A.Agent_ID AND 
LI.Country_ID = C.Country_ID AND 
LI.Job_ID = J.Job_ID );

РЕДАКТИРОВАТЬ: Извините, что пропустил ОТ - это действительно нужно. Я не пытаюсь получить идеальную SQL-статистику для вас - вы знаете, какие столбцы вам нужны и что соответствовать: это всего лишь грубый набросок. Вот ссылка на официальную документацию по присоединению MySQL.

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