1

我有一个 SELECT 查询,您可以在其中搜索车主。每个车主都可以拥有不止一辆汽车。有随机生成的汽车列表,我们必须找到它们的所有者。

...

$owners[] = $dbaseowners["ownerid"] // owner ID's fetched from database

$owners = implode (',',$owners);

SELECT carname FROM cars WHERE ownerid IN ($owners);

我的问题是当一个所有者被多次使用时,例如: IN (1,1,4,1) - mysql 只获取该所有者数据的一个“副本”。

因为我有一个随机生成的汽车列表,所以无论车主是否相同,我都必须为每辆车设置车主行。

有任何想法吗?

4

3 回答 3

2

我相信你必须修改你的设计并有一个连接表来将车主与汽车联系起来。在表格的一行中有 1,1,4,1 不符合第一个范式,您应该避免使用它。

于 2012-08-31T18:45:40.650 回答
0

尝试使用array_unique从数组中删除重复值:

...

$owners[] = $dbaseowners["ownerid"] // owner ID's fetched from database

$owners = implode (',', array_unique($owners));

SELECT carname FROM cars WHERE ownerid IN ($owners);
于 2012-08-31T19:05:18.617 回答
0

试试这个:

$sql = mysql_query("SELECT `ownerid`, `carname` FROM `cars` WHERE `ownerid` IN (".array_unique($owners).")");
$ret = Array();
while($row = mysql_fetch_assoc($sql)) $ret[$row['ownerid']] = $row['carname'];
foreach($owners as $owner) {
    echo $owner.": ".$ret[$owner]."<br />\n";
}
于 2012-08-31T19:11:51.677 回答