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,并将其作为正确答案勾选:)