2016-03-25 3 views
1

У меня есть код ниже, который содержит запрос MySQL:Выбор определенных данных

// These gets the values entered in the drop-down lists and stores the values as 
// variables. 
$event = $_GET['cmbEvent']; 
$yrGroup = $_GET['cmbYrGroup']; 
$gender = $_GET['cmbGender']; 

/* The query $eygQuery, where the 'eyg' stands for event, year group and gender, 
grabs the stud_fname, stud_sname, result_studpoints, result_position, studevent_result 
where the requirements of the specific stud_gender, stud_yrgroup and event_id is met */ 
$eygQuery = " 
    SELECT stud_id, 
      stud_fname, 
      stud_sname, 
      result_studpoints, 
      result_position, 
      studevent_result 
    FROM 
     students s 
      INNER JOIN 
     result r on 
     s.stud_id = r.stud_id 
    WHERE 
     stud_gender = '$gender' 
    AND stud_yrgroup = '$yrGroup' 
    AND r.event_id = '$event' 
"; 

$result = mysqli_query($conn, $eygQuery); 

терпит неудачу из-за «SELECT stud_id,» (который является первичным и внешним ключом). Когда я удалить stud_id оставив запрос выглядеть следующим образом:

 SELECT stud_fname, 
       stud_sname, 
       result_studpoints, 
       result_position, 
       studevent_result 
     FROM 
      students s 
       INNER JOIN 
      result r on 
      s.stud_id = r.stud_id 
     WHERE 
      stud_gender = '$gender' 
     AND stud_yrgroup = '$yrGroup' 
     AND r.event_id = '$event' 

Он работает, но как запрос будет изменен также выходной stud_id тоже?

Заранее спасибо.

ответ

2

stud_id неоднозначно в вашем запросе. Марка (обозначают) поле, чтобы быть более конкретным:

SELECT s.stud_id, 
      stud_fname, 
      stud_sname, 
      result_studpoints, 
      result_position, 
      studevent_result 
    FROM 
     students s 
      INNER JOIN 
     result r on 
     s.stud_id = r.stud_id 
    WHERE 
     stud_gender = '$gender' 
    AND stud_yrgroup = '$yrGroup' 
    AND r.event_id = '$event' 

EDIT: Для более удобного результата выборки я хотел бы предложить использовать псевдонимы для некоторых выбранных полей:

SELECT s.stud_id AS student_id, 
     .... 

Fetching пример данных (в PHP):

... 
while ($data = mysqli_fetch_assoc($result)) { 
    $studId = $data['student_id']; 
    echo $studId; 
} 
... 
+0

Спасибо, поэтому, когда я выходной результат, поэтому я такой вывод: 'в то время как ($ данных = mysqli_fetch_assoc ($ результат)) { $ studId = $ data ['s.stud_id']; echo $ studId; } ' – SubZero

+0

@SubZero, проверьте мое редактирование – RomanPerekhrest

+0

@RomanPerekherst Спасибо, что это сработало :) – SubZero

0

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

SELECT s.stud_id, 
     stud_fname, 
     stud_sname, 
     result_studpoints, 
     result_position, 
     studevent_result 
FROM 
    students s 
     INNER JOIN 
    result r on 
    s.stud_id = r.stud_id 
WHERE 
    stud_gender = '$gender' 
AND stud_yrgroup = '$yrGroup' 
AND r.event_id = '$event' 
0

stud_id это поле устанавливается в обоих students и result таблиц. Когда вы запрашиваете базу данных для получения этих данных, он не знает, какое значение выбрать. Достаточно указать, что из таблицы следует считать, что данные:

SELECT s.stud_id. 
     stud_fname, 
     stud_sname, 
     result_studpoints, 
     result_position, 
     ìstudevent_result 
FROM 
     students s 
INNER JOIN 
     result r on 
     s.stud_id = r.stud_id 
WHERE 
    stud_gender = '$gender' 
AND stud_yrgroup = '$yrGroup' 
AND r.event_id = '$event' 
0

stud_id неоднозначно - он присутствует в обоих и result таблице students. Просто квалифицировать его псевдоним таблицы, и вы должны быть хорошо:

SELECT s.stud_fname, 
-- Here -^ 
     stud_sname, 
     result_studpoints, 
     result_position, 
     studevent_result 
FROM 
    students s 
INNER JOIN 
    result r ON s.stud_id = r.stud_id 
WHERE 
    stud_gender = '$gender' 
AND stud_yrgroup = '$yrGroup' 
AND r.event_id = '$event' 
Смежные вопросы