Php 根据另一个SQL查询的结果执行查询
我有两张表,上面有客户和分期付款的名称Php 根据另一个SQL查询的结果执行查询,php,mysql,sql,web,Php,Mysql,Sql,Web,我有两张表,上面有客户和分期付款的名称 Customer Table: id | name |contact |address 1 | xyz |33333333|abc 2 | xrz |33322333|abcd Installments Table: id | customer_id |amount_paid |amount_left | date 1 | 1 |2000 |3000 | 13/05/2017 2 | 1
Customer Table:
id | name |contact |address
1 | xyz |33333333|abc
2 | xrz |33322333|abcd
Installments Table:
id | customer_id |amount_paid |amount_left | date
1 | 1 |2000 |3000 | 13/05/2017
2 | 1 |2000 |1000 | 13/06/2017
现在,我想从分期付款表中为每个用户获取最新的分期付款行,我可以将其用于以下查询
SELECT * FROM installments WHERE customer_id=1 ORDER BY `id` DESC LIMIT 1
现在,问题是我想对所有的客户ID都这样做。我尝试了子查询,但它不支持多行。我试图用PHP将所有客户ID存储在一个数组中,并使用“in”,但由于客户数量超过3000,因此花费的时间太长,并返回一个超出执行时间的错误。
任何形式的帮助或提示都将不胜感激。谢谢你可以这样做
SELECT
Customers.CustomerId,
Customers.Name,
Customers.Contact,
Customers.Address,
Installments.InstallmentId,
Installments.AmountPaid,
Installments.AmountLeft,
Installments.Date
FROM
Customers
INNER JOIN
(
SELECT
MAX( InstallmentId ) AS MaxInstallmentId,
CustomerId
FROM
Installments
GROUP BY
CustomerId
) AS LatestInstallments ON Customers.CustomerId = LatestInstallments.CustomerId
INNER JOIN Installments ON LatestInstallments.MaxInstallmentId = Installments.InstallmentId
SELECT c.*,I.* FROM Customer_Table c LEFT JOIN Installments_Table I ON c.id=I.customer_id ORDER BY c.id DESC LIMIT 1
若要添加列表的限制,则只设置限制,否则保留限制部分。直到我得到你的问题,这将是帮助你。否则,您的问题可能是其他问题。您可以这样做
SELECT c.*,I.* FROM Customer_Table c LEFT JOIN Installments_Table I ON c.id=I.customer_id ORDER BY c.id DESC LIMIT 1
SELECT cust.*,inst_disp.* FROM Customer AS cust
LEFT JOIN (
SELECT MAX(id) AS in_id, customer_id
FROM installments
GROUP BY customer_id
) inst
ON inst.customer_id = cust.id
LEFT JOIN installments as inst_disp ON inst_disp.id = inst.in_id
若要添加列表的限制,则只设置限制,否则保留限制部分。直到我得到你的问题,这将是帮助你。否则你的问题可能是别的。听起来你想加入
JOIN
。听起来你想加入JOIN
。效果很好。谢谢工作得很有魅力。谢谢
SELECT cust.*,inst_disp.* FROM Customer AS cust
LEFT JOIN (
SELECT MAX(id) AS in_id, customer_id
FROM installments
GROUP BY customer_id
) inst
ON inst.customer_id = cust.id
LEFT JOIN installments as inst_disp ON inst_disp.id = inst.in_id