好的,所以我有一些MySQL表如下:
Buildings
Building-ID Building-Name
===========----=============
1 Building-1
2 Building-2
3 Building-3
4 Building-4
Building-1
Mroom State
=====----======
1 Booked
2 Empty
3 Empty
4 Empty
Building-2
Mroom State
=====----======
1 Booked
2 Empty
3 Empty
4 Empty
PHP中的查询如下(忽略硬编码,我稍微简化了代码):
$sql = "select * from Buildings";
$result = mysql_query ($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
$building[] = $row['ward_name'];
}
$v1 = 0;
while ($v1 < 4)
{
$sql = "SELECT COUNT(*) FROM `$building[$v1]` WHERE state = 'Empty'";
$result = mysql_query($sql) or die(mysql_error());
$count = mysql_result($result, 00);
var_dump($count[$v1]);
$v1 = $v1 + 1;
}
根据我的想法,这应该创建一个包含在“Buildings”表中的建筑物数组,启动一个循环,从数组中加载建筑物名称,并为表格中的行数提供包含“空”的行数“在州列中。它实际上做的是为第一个表提供一个计数,然后为其余表提供“NULL”。
我很感激你能给我的任何帮助。
干杯!
答案 0 :(得分:1)
如何更改数据模型?
表格结构可以保持原样:
Buildings
Building-ID Building-Name
===========----=============
1 Building-1
2 Building-2
3 Building-3
4 Building-4
新表:
Rooms
Building-ID Mroom State
===========-=====-=====
1 1 1
1 2 0
2 1 0
状态0 =空,状态1 =已预订
然后使用group by:
连接select count(*) from buildings b inner join rooms r on r.bid = b.id where r.state = 0 group by b.id;
然后,每个建筑物都会有一排空房间。每栋建筑都不需要桌子。
答案 1 :(得分:0)
这没有意义:
$count = mysql_result($result, 00);
var_dump($count[$v1]);
你的意思是写:
$count[$v1] = mysql_result($result, 00);
var_dump($count[$v1]);
另外,请勿使用名称与其他表的列匹配的多个表。 您可以使用一个表,其中主键跨越两列,例如在($ buildingid,$ roomid)上创建主键 这样表就有列$ buildingid,$ roomid和$ state。
答案 2 :(得分:0)
mysql_result()返回一个字符串,而不是一个数组。 修改代码并检查它现在是否按预期工作。
var_dump($count);