如何比较两个值并在选择列表中显示结果?

时间:2013-11-08 10:20:54

标签: php loops selectlist

我有一个选择列表,显示一个列表,显示:

Tech Name | Tech Zip | Tech States  (Value=Tech ID)

所有这些都来自记录集。现在,我想看看这个技术是否存在于另一个表中。如果他没有,那么我想在选择列表中显示他。否则,不理他。

更新

使用下面答案中的内容,这就是我想出来的。我认为这是有效的。这是最好的方法吗?

mysql_select_db($database_localhost, $localhost);
 $query_NeededTechs = "
    SELECT  l.*
    FROM    zip_tech l
    WHERE   NOT EXISTS
    (
    SELECT  tech_name
    FROM    zip_zip r
    WHERE   r.tech_name = l.tech_name
    )
 ";
$NeededTechs = mysql_query($query_NeededTechs, $localhost) or die(mysql_error());
$row_NeededTechs = mysql_fetch_assoc($NeededTechs);
$totalRows_NeededTechs = mysql_num_rows($NeededTechs);

我的选择列表:

<select name="select" id="select">
      <?php
do {  
?>
      <option value="<?php 
      echo $row_NeededTechs['tech_id']?>"><?php echo $row_NeededTechs['tech_name'] . " | " . $row_NeededTechs['tech_zip'] . " | " . $row_NeededTechs['states']?></option>
      <?php
} while ($row_NeededTechs = mysql_fetch_assoc($NeededTechs));
  $rows = mysql_num_rows($NeededTechs);
  if($rows > 0) {
      mysql_data_seek($NeededTechs, 0);
      $row_NeededTechs = mysql_fetch_assoc($NeededTechs);
  }
?>
    </select>

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解你的问题,但似乎你想从一个表中选择所有'技术'而在另一个表中不存在?

如果是这样,这对你来说是完美的阅读[附例]: NOT IN vs. NOT EXISTS vs. LEFT JOIN / IS NULL

哪种方法最好选择一个表中存在但另一个表中缺少的值?

这样:

SELECT  l.*
FROM    t_left l
LEFT JOIN
        t_right r
ON      r.value = l.value
WHERE   r.value IS NULL

或者这个:

SELECT  l.*
FROM    t_left l
WHERE   l.value NOT IN
        (
        SELECT  value
        FROM    t_right r
        )

或者这个:

SELECT  l.*
FROM    t_left l
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    t_right r
        WHERE   r.value = l.value
        )

<强>来源:

Related StackOverflow Question

ExplainExtended