我有一个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只获取该所有者数据的一个'副本'。
由于我有一个随机生成的汽车清单,无论车主是否相同,我都必须拥有每辆车的车主排。
有什么想法吗?
答案 0 :(得分:2)
我相信你必须修改你的设计并有一个连接表来将车主与汽车联系起来。在一行表中有1,1,4,1不符合第一个普通表格,你应该避免使用它。
答案 1 :(得分: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);
答案 2 :(得分: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";
}