Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 3使用1查询和限制进行MYSQL查询_Php_Mysql - Fatal编程技术网

Php 3使用1查询和限制进行MYSQL查询

Php 3使用1查询和限制进行MYSQL查询,php,mysql,Php,Mysql,以下是我的php代码: $trsql = "SELECT * from members order by id desc"; $trresult = mysql_query($trsql); $count = mysql_num_rows($trresult); while ($trrow = mysql_fetch_array($trresult)) { $bill_membertotal = mysql_query("SELECT * FROM billing WHERE

以下是我的php代码:

 $trsql = "SELECT * from members order by id desc";
  $trresult = mysql_query($trsql);
  $count = mysql_num_rows($trresult);
  while ($trrow = mysql_fetch_array($trresult)) {
  $bill_membertotal = mysql_query("SELECT * FROM billing WHERE suite='$trrow[suite]' order by bill_id desc limit 1"); 
  $bill_membercount = mysql_fetch_array($bill_membertotal);
  $check_membertotal = mysql_query("SELECT SUM(net) AS checker FROM billing WHERE suite='$trrow[suite]'"); 
  $check_membercount = mysql_fetch_assoc($check_membertotal);

echo $trrow['col1'] $trrow['col2'] $trrow['col1'] $bill_membercount['balance']  $check_membercount['checker'] ;
}
成员表: [id套件第1列第2列第3列] 计费表: [账单id套房总费用净余额]

问题:如何使用1查询进行此3查询?我知道MYSQL的连接函数。但是在这种情况下怎么办?

未测试:

select * , 
        (select count(*) from members) as members_count,
        (select count(*) from billing where suite = bill.suite) as bill_count,
        (select count(*) from billing where suite = check.suite) as check_count,
from members members
inner join billing  bill on members.suite = bill.suite
inner join billing check members.suite = check.suite
$query = "SELECT
    `member`.`col1` AS `col1`,
    `member`.`col2` AS `col2`,
    `bill`.`balance` AS `balance`,
    SUM(`bill`.`net`) AS `checker`
FROM
    `members` AS `member`,
    `billing` AS `bill`,
WHERE
    `bill`.`suite`=`member`.`suite`
ORDER BY
    `member`.`id`,
    `bill`.`bill_id`
DESC";
$results    = mysql_query($query);
$count      = mysql_num_rows($results);

while($entry = mysql_fetch_array($results)) {
    printf('%s, %s, %s, %s, %s', $entry['col1'], $entry['col2'], $entry['col1'], $entry['balance'], $entry['checker']);
}
mysql.*被标记为已弃用

未测试:

$query = "SELECT
    `member`.`col1` AS `col1`,
    `member`.`col2` AS `col2`,
    `bill`.`balance` AS `balance`,
    SUM(`bill`.`net`) AS `checker`
FROM
    `members` AS `member`,
    `billing` AS `bill`,
WHERE
    `bill`.`suite`=`member`.`suite`
ORDER BY
    `member`.`id`,
    `bill`.`bill_id`
DESC";
$results    = mysql_query($query);
$count      = mysql_num_rows($results);

while($entry = mysql_fetch_array($results)) {
    printf('%s, %s, %s, %s, %s', $entry['col1'], $entry['col2'], $entry['col1'], $entry['balance'], $entry['checker']);
}

mysql.*被标记为已弃用

不确定,但请尝试一下,因为这是您的报告所期望的

查询:

SELECT m.*, COUNT(b.id) as member_count, SUM(net) as checker
FROM member m
JOIN billing b ON m.suite = b.suite
GROUP BY b.suite

不确定,但请尝试一下,因为这是您的报告所期望的

查询:

SELECT m.*, COUNT(b.id) as member_count, SUM(net) as checker
FROM member m
JOIN billing b ON m.suite = b.suite
GROUP BY b.suite

这似乎会产生预期的结果;因为您只需要一个字段的最后一张账单,而MySQL没有分析函数,所以子查询将比连接更容易解决该字段

SELECT id member_id, col1, col2, col3,
  (SELECT balance 
   FROM billing b1 
   WHERE b1.suite=m.suite 
   ORDER BY bill_id DESC LIMIT 1) balance,
   SUM(net) AS checker
FROM members m
LEFT JOIN billing b
  ON m.suite = b.suite
GROUP BY col1,col2,col3,id
ORDER BY id DESC

.

这似乎给出了预期的结果;因为您只需要一个字段的最后一张账单,而MySQL没有分析函数,所以子查询将比连接更容易解决该字段

SELECT id member_id, col1, col2, col3,
  (SELECT balance 
   FROM billing b1 
   WHERE b1.suite=m.suite 
   ORDER BY bill_id DESC LIMIT 1) balance,
   SUM(net) AS checker
FROM members m
LEFT JOIN billing b
  ON m.suite = b.suite
GROUP BY col1,col2,col3,id
ORDER BY id DESC

.

您能否发布所需的db架构和预期报告列,然后使用JoinsSakhale posted Thank轻松演示您发布所需的db架构和预期报告列,然后很容易演示如何使用JoinsSakhale posted Thanksy您可以使用group by。根据您需要的数据,我刚才编写的查询将返回您不需要的3个查询的所有信息。您将收到一列,其中包含所需的总值。这意味着每一行将包含您需要的所有3个总计的值。@zionbenyacov如果您查看原始查询,则不是它们所要的计数。您可以使用group by after根据您需要的数据,我刚才编写的查询将返回您不需要的3个查询的所有信息。您将收到一列,其中包含所需的总值。这意味着每一行将包含您需要的所有3个总计的值。@zionbenyacov如果您查看原始查询,则不是它们所追求的计数。如果您需要限制,请添加这些?没有主动性!如果你需要一个限制,加上这些?没有主动性!呃。你能用实际的表模式和一些示例值更新上面的sql FIDLE吗:)@MoyedAnsari-查询中编写的
成员
表是关于在SQLFIDDLE中创建的表的:)@MoyedAnsari-成员表在查询中编写的是关于在sqlfiddleI中创建的表的,这在php中是新的。您的脚本在sqlfifle上运行得很好,但我不能在我的php脚本中打印结果。我是php新手。您的脚本在sqlfifle上运行得很好,但我无法在我的php脚本中打印结果。