- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试生成一个将显示“已支付”发票的查询。我的查询不起作用,这意味着其中存在错误,或者我试图通过这种方式实现的目标是不可能的。
// paid
$statement = "accounts_invoice i
INNER JOIN customer_type ct on i.invoice_customer_type = ct.customer_type_id
LEFT JOIN accounts_invoice_payment ip on i.invoice_id = ip.invoice_payment_invoice_id
WHERE invoice_posted='1'
AND (i.invoice_total_amount_exc_vat + i.invoice_total_vat_amount) = ip.TotalPayments"
. $where
. " ORDER BY invoice_id DESC";
$invoice_details_query = mysqli_query($con,
"SELECT i.*, ct.customer_type_name,
ip.invoice_payment_amount AS TotalPayments
FROM {$statement}
LIMIT {$startpoint} , {$per_page}")
or die(mysql_error());
$where
字符串在这个例子中是空的,你可以删除它。您也可以删除“LIMIT”,因为它纯粹用于分页。
我只是想制作一个页面来显示已付款或未付款的发票,考虑到这在理论上听起来很简单,这让我抓狂!
数据库结构;
-- phpMyAdmin SQL Dump
-- version 4.0.10.7
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 08, 2015 at 05:17 PM
-- Server version: 5.1.73-cll
-- PHP Version: 5.4.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `propsyst_atlas`
--
-- --------------------------------------------------------
--
-- Table structure for table `accounts_invoice`
--
CREATE TABLE IF NOT EXISTS `accounts_invoice` (
`invoice_id` int(11) NOT NULL AUTO_INCREMENT,
`invoice_customer_type` tinyint(4) DEFAULT NULL,
`invoice_customer` int(11) DEFAULT NULL,
`invoice_date` date DEFAULT NULL,
`invoice_due_date` date DEFAULT NULL,
`invoice_property_id` int(11) DEFAULT NULL,
`invoice_tenancy_id` int(11) DEFAULT NULL,
`invoice_branch` int(11) DEFAULT NULL,
`invoice_payment_terms` tinyint(4) DEFAULT NULL,
`invoice_notes` text COLLATE utf8_bin,
`invoice_total_amount_exc_vat` decimal(10,2) DEFAULT NULL,
`invoice_total_vat_amount` decimal(10,2) DEFAULT NULL,
`invoice_posted` tinyint(4) DEFAULT '0',
`invoice_date_created` datetime DEFAULT NULL,
`invoice_date_updated` datetime DEFAULT NULL,
`invoice_date_posted` datetime DEFAULT NULL,
`invoice_created_by` int(11) DEFAULT NULL,
`invoice_updated_by` int(11) DEFAULT NULL,
`invoice_posted_by` int(11) DEFAULT NULL,
PRIMARY KEY (`invoice_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=87 ;
-- phpMyAdmin SQL Dump
-- version 4.0.10.7
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 08, 2015 at 05:18 PM
-- Server version: 5.1.73-cll
-- PHP Version: 5.4.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `propsyst_atlas`
--
-- --------------------------------------------------------
--
-- Table structure for table `accounts_invoice_payment`
--
CREATE TABLE IF NOT EXISTS `accounts_invoice_payment` (
`invoice_payment_id` int(11) NOT NULL AUTO_INCREMENT,
`invoice_payment_date` date DEFAULT NULL,
`invoice_payment_amount` decimal(10,2) DEFAULT NULL,
`invoice_payment_method` tinyint(4) DEFAULT NULL,
`invoice_payment_invoice_id` int(11) DEFAULT NULL,
`invoice_payment_notes` text COLLATE utf8_bin,
`invoice_payment_date_created` datetime DEFAULT NULL,
`invoice_payment_date_updated` datetime DEFAULT NULL,
`invoice_payment_created_by` int(11) DEFAULT NULL,
`invoice_payment_updated_by` int(11) DEFAULT NULL,
PRIMARY KEY (`invoice_payment_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=71 ;
-- phpMyAdmin SQL Dump
-- version 4.0.10.7
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 08, 2015 at 05:58 PM
-- Server version: 5.1.73-cll
-- PHP Version: 5.4.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `propsyst_atlas`
--
-- --------------------------------------------------------
--
-- Table structure for table `customer_type`
--
CREATE TABLE IF NOT EXISTS `customer_type` (
`customer_type_id` int(11) NOT NULL AUTO_INCREMENT,
`customer_type_name` varchar(20) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`customer_type_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ;
最佳答案
实际上你的查询是
SELECT
i.*,
ip.invoice_payment_amount AS TotalPayments
FROM accounts_invoice i
LEFT JOIN accounts_invoice_payment ip
ON i.invoice_id = ip.invoice_payment_invoice_id
WHERE invoice_posted='1'
AND (i.invoice_total_amount_exc_vat + i.invoice_total_vat_amount) = ip.TotalPayments
ORDER BY invoice_id DESC
并且该查询失败,因为 where 语句中的 ip.TotalPayments
是未知列。您需要使用原始名称 ip.invoice_payment_amount
。别名仅用于返回的集合,而不用于查询本身。
此外,您的数据库设计还可以改进。首先,我建议使用 InnoDB
而不是 MyISAM
。这允许您使用外键,因此表之间实际上存在关系。
另外,我会将 WHERE
子句的 AND
部分移至 ON
子句,如下所示:
SELECT
i.*,
ip.invoice_payment_amount AS TotalPayments
FROM accounts_invoice i
LEFT JOIN accounts_invoice_payment ip
ON i.invoice_id = ip.invoice_payment_invoice_id
AND (i.invoice_total_amount_exc_vat + i.invoice_total_vat_amount) = ip.invoice_payment_amount
WHERE invoice_posted='1'
ORDER BY invoice_id DESC
SELECT * FROM A LEFT JOIN B ON A.id = B.a_id
的结果包含 A
的每一行和 B< 的匹配行
。如果 B
没有与 A
中的行匹配的行,则 B 中列的值为 NULL
。如果您不希望这样,而只想要 A
的行在 B
中具有匹配行,则您应该使用 INNER JOIN
。
关于php - 这个 'paid or unpaid invoices' MySQL 查询可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895937/
我想在已付款状态时禁用付款按钮。 我的代码: Month DPS Amount Status
我正在开发一个基于 Spring 的 Java 应用程序,我能够在其中成功集成 paypal。因此,我们有一个基于类(class)注册的网站,用户正在该网站上注册。现在我已经稍微修改了付款方式,所以从
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我有一个应用程序的 2 个版本。精简版和付费版。我想要在 Lite 版本中有一个按钮,单击该按钮会在 iPhone 上打开 App Store 应用程序,并显示该应用程序的付费版本页面。 我该怎么做?
我在现有的常规 php Web 应用程序中使用 auth0。 我的网站上有免费用户和付费用户。对于免费用户的注册过程很简单,我调用了触发验证电子邮件的创建用户 api。 但对于付费用户,我有一个多步骤
我将发布一个具有免费精简版和付费专业版的应用。当然,Pro 付费版还有很多附加功能。 我的问题是:在 Lite 版本中,我应该显示附加功能(不活动,可能显示为灰色并显示“专业版”消息)还是隐藏它们更好
提交 SuiteScript 1.0 部署到发票后,我有一个用户事件,但我似乎无法触发它。我需要它在付款后运行,并且发票状态更新为“已全额付款”(假设付款后更新的发票是提交后事件?)如果我返回发票并编
据我所知,如果我想发布具有两种不同风格的应用程序,我需要区分它们的 applicationId。 这意味着可以在一台设备上同时安装免费和付费版本。我不想要这个。我想安装付费 flavor 以覆盖免费
我正在尝试生成一个将显示“已支付”发票的查询。我的查询不起作用,这意味着其中存在错误,或者我试图通过这种方式实现的目标是不可能的。 // paid $statement = "accounts_inv
我正处于一个棘手的位置,我正在努力找出继续进行的最佳方法。几个月前我发布了一款应用程序,并向数百人收取了 0.99 美元的费用。我现在有兴趣通过应用内购买使该应用免费。我怎样才能让已经付款的人不需要再
我正在开发一个应用程序,它将有一个付费(完整)版本和一个免费(精简)版本。 在为 Android 开发的另一个应用程序中,可以使用 flavors (productFlavors) 轻松管理这一点,我
我有一个关于 Google Analytics 如何解释不同 session 的问题。 假设客户通过点击 Google 搜索结果(付费搜索或自然搜索)中的链接访问我的网站。然后,客户将我的网站添加为书
我有一个成员(member)资格,每个用户每 30 天获得 100 个积分。所有成员(member)资格均需预先支付一到无限个月的费用。 我想每 30 天将积分余额重置为 100,无论用户是否使用他的
你们是我最后的希望...我用 wordpress 创建了一个网站,我正在使用 woocommerce 插件来销售我的书。我设置了所有内容(不是我的第一家商店,而是我的第一家 woocommerce 商
已结束。 这个问题是 off-topic .它目前不接受答案。 想要改进这个问题? Update the question所以它是on-topic堆栈溢出。 关闭 9 年前。 Improve this
我有 2 个版本的应用程序。精简版和付费版。我想在 Lite 版本中有一个按钮,单击该按钮会在 iPhone 上打开 App Store 应用程序并显示该应用程序的付费版本页面。 我该怎么做呢?我不想
摘要:我是否需要在 iTunesConnect 上接受 Apple 的“付费应用程序”契约(Contract)才能更新我的免费应用程序?如果没有,我应该遵循哪些步骤来更新我的免费应用程序? 细节: 我
我想为我的网站制作成员(member)内容。 我使用付费成员(member)专业插件来实现这一目标。 我注册了 paypal 并生成了 API 凭证。 现在,当我想在该成员(member)级别添加新用
我想在 AppStore 上发布我的 iOS 应用程序的两个版本。 一个是付费的,另一个是免费的。截至目前,我的付费应用程序代码已完成。现在我想为免费应用程序的 iAd 和 InAppPurchase
我要进入数组的 foreach 循环。当我尝试获取 key 时,它显示错误。 如果我显示整个原始数组,它会显示所有数据。 {{bal}} //显示 { "
我是一名优秀的程序员,十分优秀!