Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL下拉列表中存在重复条目_Php_Mysql_Drop Down Menu - Fatal编程技术网

Php mySQL下拉列表中存在重复条目

Php mySQL下拉列表中存在重复条目,php,mysql,drop-down-menu,Php,Mysql,Drop Down Menu,好吧,我是mySQL新手。很抱歉,这是一个非常新手的问题。基本上,我有两张桌子、两个助手和两个键。 内容如下: <?php mysql_connect('hostname', 'user', 'Password'); mysql_select_db('log'); $key_fetch = "SELECT `associates`.`department`,`associates`.`associate`,`keys`.`key_name` FROM associates , `keys

好吧,我是mySQL新手。很抱歉,这是一个非常新手的问题。基本上,我有两张桌子、两个助手和两个键。 内容如下:

<?php
mysql_connect('hostname', 'user', 'Password');
mysql_select_db('log');

$key_fetch = "SELECT `associates`.`department`,`associates`.`associate`,`keys`.`key_name` FROM associates , `keys` ORDER BY `key_name` DESC";
$results = mysql_query($key_fetch);

echo "<select name='key_name' size='5'>";
while ($row = mysql_fetch_array($results)) {
echo "<option value='" . $row['key_name'] . "'>" . $row['key_name'] . "</option>";
}
echo "</select>";
?>
合伙人: 身份证件 部门 联合 添加日期

关键点: 身份证件 密钥名称, 加上日期,

我的下拉列表代码如下:

<?php
mysql_connect('hostname', 'user', 'Password');
mysql_select_db('log');

$key_fetch = "SELECT `associates`.`department`,`associates`.`associate`,`keys`.`key_name` FROM associates , `keys` ORDER BY `key_name` DESC";
$results = mysql_query($key_fetch);

echo "<select name='key_name' size='5'>";
while ($row = mysql_fetch_array($results)) {
echo "<option value='" . $row['key_name'] . "'>" . $row['key_name'] . "</option>";
}
echo "</select>";
?>

问题是我只有5个键,我有10个助手,这会在我的下拉列表中创建重复项,我无法用SELECT DISTINCT修复它,我不太确定还有什么可以尝试。

基于上述Q注释可视化笛卡尔积

create table t1
(   id int auto_increment primary key,
    stuff1 varchar(50) not null
);
insert t1 (stuff1) values ('111.1'),('111.2'),('111.3');

create table t2
(   id int auto_increment primary key,
    stuff2 varchar(50) not null
);
insert t2 (stuff2) values ('222.1'),('222.2'),('222.3');
A:显式联接 B:老式笛卡尔积 C:交叉连接,输出与B相同:
因此,在我看来,您的输出类似于B,50行。

首先,您应该停止使用不推荐的mysql_*函数。相反,您应该使用mysqli_*或查看PDO。第二,为什么不使用两个单独的查询呢?这样assoc和keys之间就没有关系了。对于快速响应@ElefantPhace,你会得到一个50行的笛卡尔积。我将查看mysqli_389;,我试图放置一个代码块,因为我需要在同一页面中添加第二个和第三个下拉列表。基本上,我需要建立一个密钥列表,该列表将分配给一个部门和员工,并将其保存到数据库中。否@Drew我有一个CMS页面,允许在需要时添加员工或密钥。这就是为什么我有两个表,关键部分很少更新。这是笛卡尔积,交叉连接。这两个表之间没有关系,除了,嘿,db引擎,给我每一个排列。我可能错过了一些东西,denseThanks@Drew这真的有助于将它放在正确的角度。我正在寻找创建这些下拉列表的选项。没问题。祝你好运!你比我好。
select t1.id,t1.stuff1,t2.stuff2 
from t1,t2;
+----+--------+--------+
| id | stuff1 | stuff2 |
+----+--------+--------+
|  1 | 111.1  | 222.1  |
|  2 | 111.2  | 222.1  |
|  3 | 111.3  | 222.1  |
|  1 | 111.1  | 222.2  |
|  2 | 111.2  | 222.2  |
|  3 | 111.3  | 222.2  |
|  1 | 111.1  | 222.3  |
|  2 | 111.2  | 222.3  |
|  3 | 111.3  | 222.3  |
+----+--------+--------+
9 rows in set (0.00 sec)
select t1.id,t1.stuff1,t2.stuff2 
from t1 cross join t2