2015-08-05 5 views
1

У меня возникла проблема с выбором данных из таблицы базы данных с помощью оператора «бы» и т.п.Как выбрать данные из таблицы с помощью оператора where и подобного и отразить его

$hy=mysql_query("select (Total) AS firstterm 
       FROM studentmark, subject 
       where studentmark.student_id='$name' 
        AND studentmark.YEAR='$ya' 
        AND subject.code=studentmark.code  
        AND studentmark.TERM='$term' LIKE 'F%'"); 

$hm=mysql_num_rows($hy); 
$fetch=mysql_fetch_array($hy); 

echo $fetch['firstterm']; 

вопрос в том, что, как «F%» (FIRST) в термин, который имеет 89, как общее не был выбран в таблице, но LIKE «S%» (второй) в члене, который имеет 73 был выбран. есть ли что-нибудь, чего я не вижу?

таблица ниже

TERM | CODE |student_id|contAss20Asg|ClassWk10 |Test2nd10|YEAR |EXAM| TOTAL 
FIRST | AGR | John  | 18  |5   | 7  |2011 | 59 | 89 
SECOND |AGR2 |John  | 13  |6   | 4  |2011 | 40 | 73 
THIRD |AGR3 |John  | 18  |6   | 8  |2011 | 34 | 64 
FIRST |BIO |John  | 12  |3   | 3  |2011 | 55 | 73 
SECOND |BIO2 |John  | 14  |8   | 7  |2011 | 56 | 85 
THIRD |BIO3 |John  | 12  |8   | 8  |2011 | 42 | 70 

Мой код указано ниже

<?php echo '</td><td>'?> 
    <?php 
    if ($fetch['Total']==NULL){ 
echo 'missed'; 
}else 
    $hy=mysql_query("select (Total) AS secondterm FROM studentmark, subject where studentmark.student_id='$name' AND studentmark.YEAR='$ya' AND subject.code=studentmark.code AND studentmark.TERM='$term' LIKE 'S%'"); 
$hm=mysql_num_rows($hy); 
$fetch=mysql_fetch_array($hy); 
echo $fetch['secondterm']; 
?> 
<?php echo '</td><td>'?> 
    <?php 
    if ($fetch['Total']==NULL){ 

}else 
    $hy=mysql_query("select (Total) AS firstterm FROM studentmark, subject where studentmark.student_id='$name' AND studentmark.YEAR='$ya' AND subject.code=studentmark.code AND studentmark.TERM='$term' LIKE 'F%'"); 
$hm=mysql_num_rows($hx); 

$hm=mysql_num_rows($hy); 
$row=mysql_fetch_array($hy); 
echo $row['secondterm']; 


?> 

<?php echo '</td><td>'?> 
    <?php 
    if ($fetch['Total']==NULL){ 
//echo 'missed'; 
}else 
    $hy=mysql_query("select (Total) AS thirdterm FROM studentmark, subject where studentmark.student_id='$name' AND studentmark.YEAR='$ya' AND subject.code=studentmark.code AND studentmark.TERM='$term'"); 
$hm=mysql_num_rows($hy); 

$hm=mysql_num_rows($hy); 
$fetch=mysql_fetch_array($hy); 
$row=mysql_fetch_array($hy); 

echo $fetch['firstterm']+ $row['secondterm'] + $fetch['thirdterm']; 

?> 
+0

Любая обратная связь на любой из этих ответов? Или ты собираешься есть и бегать? – RiggsFolly

ответ

0

LIKE является оператором сравнения, вы должны использовать его в качестве оператора, как вы бы с «=»,» > 'и т. д.

studentmark.TERM LIKE '%someval%'; 

Надеюсь, что ответит на ваш вопрос.

0

Подобное синтаксис был неправильно поэтому попробуйте этот

SELECT TOTAL AS firstterm 
FROM studentmark, subject 
WHERE studentmark.student_id='$name' 
    AND subject.code=studentmark.code 
    AND studentmark.YEAR='$ya' 
    AND studentmark.TERM LIKE 'F%'"); 

Было бы лучше закодированы с использованием синтаксиса JOIN, а так как этот

SELECT TOTAL AS firstterm 
FROM studentmark 
    JOIN subject ON subject.code=studentmark.code 
WHERE studentmark.student_id='$name' 
    AND studentmark.YEAR='$ya' 
    AND studentmark.TERM LIKE 'F%'"); 

Кроме того, что случилось бы, если они изобрели FOURTH термин это не даст правильного ответа. Как столбец TERM, кажется, формализованные в FIRST, SECOND, THIRD это woudl быть лучше, чтобы полностью потерять LIKE и сделать

SELECT TOTAL AS firstterm 
FROM studentmark 
    JOIN subject ON subject.code=studentmark.code 
WHERE studentmark.student_id='$name' 
    AND studentmark.YEAR='$ya' 
    AND studentmark.TERM = 'FIRST'");