我有两张桌子
(1) Table Names (1) id (2) name (2) Table Numbers (1) id (2) userid (3) number
查询:
$GrabNumbers = mysql_query("SELECT name,number FROM Names
JOIN Numbers ON
Numbers.useid = name.id");
当我加入表格时,它会重复名称,如:
约翰:+1 508 078 1540
约翰:+1 087 540 4508
我需要的是:
john : +1 508 078 1540
: +1 087 540 4508
答案 0 :(得分:0)
是的,这就是MySQL所做的。如果你不想在输出中重复它们,你需要创建一个PHP脚本来正确输出它们。
这样的事情:
$printed = array();
foreach( $rows as $row ) {
if( isset ( $printed[ $row['name'] ] ) ) {
// print only the number
}
else {
// print both number and name
// then, add the name to the list of names already printed
$printed[$row['name']] = true;
}
}
并确保按名称订购行!否则,您可能会得到不可预测(和错误)的结果。
答案 1 :(得分:0)
不完全符合您的要求,但您可以使用GROUP_CONCAT()
列之前的name
功能分组。 (SQL只回答;不知道PHP)
select n.name,
group_concat(distinct nu.numbers SEPARATOR ':')
FROM `Names` n
JOIN `Numbers` nu ON
nu.userid = n.id
group by n.name
答案 2 :(得分:0)
$GrabNumbers = mysql_query("SELECT name,number FROM Names
JOIN Numbers ON
Numbers.useid = name.id");
$name = '';
while($row = mysqli_fetch_assoc($GrabNumbers)){
if($name == '' OR $name != $row['name']){
echo $row['name'] . ' : ' . $row['number'];
}
else{
echo ' : ' . $row['number'];
}
$name = $row['name'];
}