假设我的表格如下:
我希望它在表格中显示如下:
示例:
15.3.2013-15.3.2013 / 8:00-13:00
2 / Audi / A4
这就是我现在所拥有的:
$sqlquery =
"SELECT * FROM table1
LEFT JOIN table2 ON table1.id=table2.id
GROUP BY table1.id";
(抱歉我的格式化)
答案 0 :(得分:0)
您需要首先执行查询:
$sqlquery = "SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id";
这将提供每个id(多行)所需的所有记录。然后你需要使用一个语句(for,foreach等)在php中过滤你的记录。
流程如下:
Carid(t1) / car(t1) / model(t1)
rentstart(t2)-rentstop(t2) / renttimestart(t2)-Renttimestop(t2)
希望你明白这一点。
答案 1 :(得分:0)
如果您希望所有汽车仅列出一次并通过汽车提供所有相应的租车,您应该使用某种循环。由于您没有提供您正在使用的数据库,我只能给您伪代码:
$sqlquery = "SELECT * FROM table1";
*execute query*
while ($car = *fetch*) {
*print car data*
$sqlquery = "SELECT * FROM table2 where id = ?";
*execute inner query with parameter binding: $car["id"]*
while ($rent = *fetch*) {
*print rent data*
}
}
一般提示:在第二个表格上使用主键,并将“id”重命名为“carid”。避免混淆。
答案 2 :(得分:0)
如果您希望在sql中完成所有操作,则可以创建存储过程:
declare @Table1 table
(
Id int,
Car varchar(100),
Model varchar(100)
)
Insert into @Table1 values
Select ID,Car,model From Table1
Declare @Temp Table
(
FinalValue varchar(300)
)
Declare @id int
While ((Select Count(*) From @Table1)>0)
Begin
Set @id =(Select Top 1 id From @Table1)
Insert Into @Temp
Select cast(id as varchar(5))+'/'+car+'/'+model From @Table1 Where Id=@id
Insert @Temp Select rentstart+'-'+rentstop +'/'+ renttimestart+'-'+Renttimestop From Table2 Where Id=@id
Delete From @Table1 Where Id=@id
End
Select * From @Temp
输出:
1/BMW /320
14.3.2013-14.3.2013/13:30-14:30
15.3.2013-15.3.2013/8:00-13:30
2/Audi/A4
15.3.2013-15.3.2013/8:00-13:30