2012-02-11 55 views
0

我已创建一个数据库与三个表。我有一个表“字段”,其中有一个从1到5的id_field和一个具有开始和结束时间的表名槽。当我想显示所有可用的字段和时间是好的,但我希望显示id值为1的字段仍显示所有字段!!!!!MY SQL比较语句!不起作用的比较声明

这里是我的代码:

echo("<select name='selSlot'>"); 
$mysql_link = mysql_connect("localhost","root","*********"); 
$db_select = mysql_select_db("nuevo", $mysql_link); 
$query = "SELECT * FROM field WHERE id_field = 1 CROSS JOIN slot WHERE (id_field,id_slot) ". 
"NOT IN(Select field_slot,res_slot From reservation WHERE res_date = '" 
    .$today['year']."-".$today['mon']."-".$today['mday']."') ORDER by id_field,id_slot"; 
$result = mysql_query($query) 
    or die ("Query '$query' failed with error message: " . mysql_error()); 
$row = mysql_fetch_assoc($result); 
echo "apoel"; 
while ($row) { 
    echo("<option value='" .$row['id_field'].",".$row['id_slot']."'>".$row['description']. 
     " ".$row['start_time']."-".$row['end_time']." </option>"); 
    $row = mysql_fetch_assoc($result); 
} 
echo("</select>"); 

我不知道为什么它不给我看只有场ID之一,仍然显示我的所有字段!!!!

+2

您需要解释什么问题更好。请阅读本指南如何提出更好的问题关于SO http://stackoverflow.com/questions/how-to-ask – Relequestual 2012-02-12 00:01:03

回答

1

您的查询有两个WHERE条款:

.... WHERE id_field = 1 CROSS JOIN slot WHERE ... 

应该导致数据库错误。正确的语法是:

SELECT * 
FROM field 
    CROSS JOIN slot 
WHERE id_field = 1 
    AND (id_field,id_slot) 
... 
+0

当我像这样运行它仍然显示我所有的领域..它不给我任何错误 – apoellitsi 2012-02-12 00:14:42

+0

不,这不可能是真的。在运行之前打印(回显)'$ query'并将其发布到问题中。 – 2012-02-12 00:20:07

+0

嗯,它不打印任何东西!我应该做些什么来获得id_field 1,我需要比较它以获得正确的结果!!? – apoellitsi 2012-02-12 00:25:26