php - Mysql - 如果值不存在,则使用另一个表

标签 php mysql subquery

我想做的是运行查询来显示所有产品 客户可能有折扣(当他们登录时)或者它只使用标准条款定价:

表格是: 产品想要显示全部 制造商、产品范围、网页代码、描述、供应商代码、价格、增值税等

standardTermsPricing(不包含任何用户 ID) 供应商,供应商代码,金额

供应商折扣 供应商(供应商代码),用户,金额

产品折扣 用户,产品(网络代码),金额``

我知道用户 y127 正在某种级别上工作,但如果我尝试使用 z999,则该 z999 不在表 sellerdiscounts 或 ProductDiscounts 中,因此没有结果。

我当前的 select 语句并没有真正起作用,它得到了一些结果,但不是我想要的......有什么想法吗?

最终结果我使用 PHP mysqli_query 循环结果以显示给客户并导出 CSV 文件 - 但这是另一个问题!!

非常感谢,伊恩

SELECT  
p.name,  
p.manufacturer, 
p.productRange, 
p.webcode, 
p.description, 
p.supplierCode, 
p.priceExVat, 
stp.amount 'standard discount amount', 
sd.amount 'supplier discount amount',
pd.amount 'product discount amount',
sd.user
FROM
products p
  JOIN standardTermsPricing stp ON p.supplierCode  =  stp.supplierCode 
  JOIN supplierdiscounts sd ON p.supplierCode = sd.supplier 
  JOIN productDiscounts pd ON p.webcode = pd.product  
  WHERE  sd.user = 'Y127'


最佳答案

JOININNER JOIN 相同,因此仅返回匹配的组合。如果您想要所有行,并且当折扣表中没有匹配行时,您需要例如 LEFT JOIN:

...
FROM 
    products p
INNER JOIN standardTermsPricing stp 
  ON p.supplierCode  =  stp.supplierCode 
LEFT JOIN supplierdiscounts sd 
  ON p.supplierCode = sd.supplier 
LEFT JOIN productDiscounts pd 
  ON p.webcode = pd.product  
WHERE sd.user = 'Y127'

关于php - Mysql - 如果值不存在,则使用另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55355671/

相关文章:

SQL NOT IN 可能存在性能问题

php - 使用 php is_dir ('~/tmp' ) 在一台机器上工作,但在另一台机器上不工作。为什么?

javascript - 如何将随机脚本注入(inject)到我的 Web 应用程序中?

php - 获取数据库信息的更好方法

Mysql 使用选择查询将数据插入新列

mysql - 与 eclipse 连接良好,但与 jenkins 抛出 com.mysql.cj.jdbc.exceptions.CommunicationsException : Communications link failure

mysql - 无需创建新表即可排除重复项的更好方法

php - 使用 Composer CLI 将数据添加到额外的属性

mysql - 如何使用带有双向实体的 RestFul Web 服务正确编写 Json?

sql - SQL Server 中的表别名和使用 Exists