有没有办法在mysql中执行此操作?
2桌
Hotel
id name
1 Hotel 1
Pickup
id_hotel pickup_name pickup_time
1 Hotel_1a 09:20
1 Hotel_1b 14:20
当我做一个JOIN时它会抛出两行。
id name id_hotel pickup_name pickup_time
1 Hotel 1 1 Hotel_1a 09:20
2 Hotel 1 1 Hotel_2a 14:20
当我制作mysql_fetch_array时,它会让我这样:
[0] => { id=>1, name=>Hotel 1,id_hotel=>1, pickup_name=>Hotel_1a, pickup_time=>09:20}
[1] => { id=>1, name=>Hotel 1,id_hotel=>1, pickup_name=>Hotel_1b, pickup_time=>14:20}
我想知道我是否可以使用数组。
类似的东西:
[0] => { id=>1,
name=>Hotel 1,
id_hotel=>1,
pickup_name=>Hotel_1a,
pickup_time=>array{
[0]=>09:20
[1]=>14:20
}
谢谢!
答案 0 :(得分:1)
没有。你有两条记录。 您需要手动构建阵列。
循环记录并通过传输ID开始新的arrayindex。
在查询中使用order by-clause
SELECT .... order by id
在PHP中:
$myArray = null;
$index = -1;
$lastID = null;
//Loop
if( $record[ 'id' ] !== $lastId ){
$lastID = $record['id'];
$index++;
$myArray[ $index ] [ 'id' ] = $record[ 'id' ];
$myArray[ $index ] [ 'name' ] = $record[ 'name' ];
$myArray[ $index ] [ 'id_hotel' ] = $record[ 'id_hotel' ];
//...
$myArray[ $index ] ['pickup_time'] = array();
}
$myArray[ $index ] ['pickup_time'] = array_push( $record[ 'pickup_time' ] );
//loop-end
答案 1 :(得分:1)
不,单靠MySQL就无法做到这一点。
你有三种方法可以解决这个问题:
答案 2 :(得分:1)
您可以对它进行GROUP CONCAT然后使用explode。
希望这有帮助。