MYSQL:显示寄存器、关联和重命名

MYSQL:显示寄存器、关联和重命名,mysql,Mysql,说明如下: table clientes: 1. cli_nom varchar(100) 2. cli_state varchar(100) 3. cli_city varchar(100) 4. cli_id int(11) 5. cli_status int(11) 6. cli_dateofsale date table products: 1. prod_cod int(11) 2. prod_categ char(1) 3. prod_nom varchar

说明如下:

table clientes:

 1. cli_nom  varchar(100)
 2. cli_state varchar(100)
 3. cli_city varchar(100)
 4. cli_id int(11)
 5. cli_status int(11)
 6. cli_dateofsale date

table products:

 1. prod_cod int(11)
 2. prod_categ char(1)
 3. prod_nom varchar(100)
 4. prod_price double
 5. prod_descrip varchar(100)
 6. prod_discount float

table facturas:

 1. fac_num int(11)
 2. fac_datesold date
 3. fac_cli_id int(11)
 4. fac_status int
 5. fac_total float
生成显示客户购买的所有产品的报告:客户id、客户全名、城市、州、id号、销售日期、产品代码、产品名称、销售数量,最后显示一条消息,上面写着“您已付款”或“付款待定”状态取决于付款状态,其中0=已付款,1=待定。此报告应按字母顺序排列,首先按州,然后按客户名称

我尝试的是:

    select cli_nom, cli_city, cli_state, fac_num, fac_saledate, prod_cod, fac_total, fac_status 
where fac_status = 0 as paid and fac_status = 1 as pending 
from factures, products, clients order by cli_state, cli_nom, asc;
虽然Absolutey不起作用,但我不确定是否有必要重命名或屏蔽列

表结构如下所示:

table clientes:

 1. cli_nom  varchar(100)
 2. cli_state varchar(100)
 3. cli_city varchar(100)
 4. cli_id int(11)
 5. cli_status int(11)
 6. cli_dateofsale date

table products:

 1. prod_cod int(11)
 2. prod_categ char(1)
 3. prod_nom varchar(100)
 4. prod_price double
 5. prod_descrip varchar(100)
 6. prod_discount float

table facturas:

 1. fac_num int(11)
 2. fac_datesold date
 3. fac_cli_id int(11)
 4. fac_status int
 5. fac_total float

你和奎里家有麻烦了。 当您想要查询某些内容时,完整语句的形式如下所示

Select [fields]
from [table(s)] --which means there includes inner joins
where [filter rows]
group by [fields to group]
having [filtering groups]
order by [fields]
select cli_nom, cli_city, cli_state, fac_num, fac_saledate, 
prod_cod, fac_total, fac_status 
CASE when fac_status = 0  then 'You Paid'
     when fac_status = 1 then 'payment Pending'
     else 'Not sure about state' END
from factures
inner join products on --put here how do you relate products with factures
inner join clients on -- put here how do you relate clients with products/factures
order by cli_state, cli_nom, asc;
当然,是比这更复杂更大的东西,但它会给你一些初步的概念

您将始终必须遵守此顺序,因此在查询中,您将在select中输入where

如果您希望根据某些计算更改要显示的内容,但始终会显示内容(您不是筛选,而是根据值选择要显示的内容),则可以使用子句

在本例中,您可以这样做

Select [fields]
from [table(s)] --which means there includes inner joins
where [filter rows]
group by [fields to group]
having [filtering groups]
order by [fields]
select cli_nom, cli_city, cli_state, fac_num, fac_saledate, 
prod_cod, fac_total, fac_status 
CASE when fac_status = 0  then 'You Paid'
     when fac_status = 1 then 'payment Pending'
     else 'Not sure about state' END
from factures
inner join products on --put here how do you relate products with factures
inner join clients on -- put here how do you relate clients with products/factures
order by cli_state, cli_nom, asc;
如果你不知道如何使用内部连接,你有一些信息

基本上,是一个用于关联两个表的子句

差不多

(..)
from Table1 A
INNER JOIN Table2 B on A.id = B.id
(A和B是别名,表示已设置的表)


这意味着它会将表1中的每一行与表2中的每一行进行比较,当条件匹配时(在本例中,表1中的id[
A.id
]等于表2中的id[
=B.id]
),则会显示该关系行(意味着它会显示表1中的所有行+表2中的所有行)

欢迎来到StackOverflow。您需要解释当前查询的问题是什么(预期结果与实际结果)。包括表结构和一些示例数据通常也会有所帮助。你应该帮助我们帮助你。请注意,如果这是学校作业,您的老师希望您解决此问题。谢谢。这确实是一项学校作业,但我的老师已经两周没有帮助我了,即使我没有得到任何学习材料,我也在努力保持我的高成绩,但这些练习是我的。我现在将尝试编辑问题并添加表结构,希望它不会看起来很凌乱。天哪,非常感谢你,我不知道在mysql上使用“case”^_^希望它能解决你的问题!如果这有助于您回答问题,请不要忘记upvote,并将其作为正确答案勾选:)