php
  • mysql
  • 2015-03-11 2 views -1 likes 
    -1

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

    $strSQL = "SELECT * FROM studentresult,student where studentresult.studentid=student.id and student.class='$classes' and term='$term'and studentresult.studentid=student.id and year='$year' "; 
    

    Этот запрос возвращает все studentresult.id = 2, где studentresult.id является первичным.

    Это код PHP:

    <td><div align="center"><?=$objResult["id"];?></div></td> 
        <td><div align="center"><?=$objResult["studentid"];?></div></td> 
        <td><?=$objResult["subjectid"];?></td> 
        <td><?=$objResult["marks"];?></td> 
        <td><div align="center"><?=$objResult["term"];?></div></td> 
        <td align="right"><?=$objResult["year"];?></td> 
        <td align="right"><?=$objResult["rank"];?></td> 
    

    Идентификатор берется из таблицы студента, а не берутся из studentresult таблицы. Может кто-то помочь мне с этим.

    EDIT 1:
    Ид присутствует в обеих таблицах

    EDIT 2:
    Student результат:
    ид | StudentID | SubjectID | Marks | Ранг | срок | Год выпуска

    Студент:
    ID | Roll Num | класс | Имя | Фамилия


    Заранее благодарю
    Bhaamb

    +0

    сделал Ид присутствует в обеих таблице? –

    +0

    Да, он присутствует в обоих сар ... – Bhaamb

    +0

    Затем используйте «SELECT studentresult.id как stid», а затем используйте как

    ответ

    0
    $strSQL = "SELECT *,studentresult.id as stid FROM studentresult,student where studentresult.studentid=student.id and student.class='$classes' and term='$term'and studentresult.studentid=student.id and year='$year' "; 
    

    Тогда

    <div align="center"><?=$objResult["stid"];?></div> 
    
    +0

    Спасибо, дорогие!Как я мог пропустить это! Еще раз спасибо – Bhaamb

    +0

    Добро пожаловать, пожалуйста, примите его как правильный ответ :) –

    0

    Вы лучше указать имена столбцов вместо (*) из обеих таблиц псевдонимов имена столбцов, чтобы избежать колонки конфликты имен, если оба они одинаковы, а также попытайтесь использовать Join (Внутренний или левый) в зависимости от необходимости.

    , например, некоторые вещи, как это:

    ВЫБРАТЬ S.id AS student_id, SR.id в StudentResultId, S.class, s.year ОТ studentresult AS SR INNER JOIN студент AS S ГДЕ SR .studentid = S.id и S.class = '$ classes' и s.term = '$ term' и SR.studentid = s.id и s.year = '$ year'

    0

    Прежде всего, почему вы используете это дважды в разделе where?

    studentresult.studentid=student.id

    Уточнитните все необходимые столбцы в явном виде, а объединения таблиц, имеющих одинаковые имена столбцов, например,

    SELECT studentresult.id as sr_id, student.id as s_id ... FROM ...

    и изменить его в вашем коде PHP:

    <?=$objResult["sr_id"];?>

    Смежные вопросы