mysql - 选择一个mysql表的所有内容,并回显对应类别的列表

标签 mysql sql select join if-statement

我已经研究了一段时间的 php 技能,但我什至不知道如何开始构建这个函数。

假设我在名为 Cars 的表中有 20 个条目,并且这些汽车中的每一个都有其自己唯一的自动递增 ID,以及制造商的 ID 在另一列中。然后我有另一个表,其中包含汽车制造商的名称。例如,5 辆汽车的汽车制造商 ID 为 A,另外 3 辆汽车的汽车制造商 ID 为 B,依此类推(其中 A 和 B 是汽车制造商的 ID 号)。

我将如何搜索 Cars 表,然后按字母顺序回显汽车制造商列表?

我可以弄清楚如何通过在每次找到汽车制造商时回显名称来回显汽车制造商的列表,但这意味着具有相同的汽车制造商名称 5 次而不是一次,我不知道如何将其按字母顺序排列。

如果我不是很清楚,这里有一个更形象的例子来解释我的意思。

汽车表:

1 - WhatCar - 3
2 - WhoCar  - 3
3 - TheCar  - 2
4 - SomeCar - 3
5 - ThisCar - 1
6 - ACar    - 3

创客表:

1 - AMaker
2 - DMaker
3 - CMaker
4 - BMaker

期望的输出:

AMaker
CMaker
DMaker

此外,如果我有第三个表,包含 3 个条目,只有自动递增 ID 和汽车 ID,如下所示:

1 - 3
2 - 4
3 - 6

我如何使用 if 语句使脚本生成仅对应于此“过滤器”的 Makers 列表? (如 if X 然后解析 Cars 表,elseif Y 仅解析第三个表指定的 Cars 表中的汽车)

我认为这是一个简单的功能,但我似乎无法在脑海中描绘它,也找不到合适的例子。

最佳答案

查询相当简单。 . . joindistinctorder by

对字段名做一些假设:

select distinct m.maker
from cars c join
     makers m
     on c.makerid = m.makerid
order by m.maker;

如果您有第三张表,您可以使用额外的 joinwhere 条件来处理:

select distinct m.maker
from cars c join
     makers m
     on c.makerid = m.makerid join
     thirdtable tt
     on c.carid = tt.carid
order by m.maker;

关于mysql - 选择一个mysql表的所有内容,并回显对应类别的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20673726/

相关文章:

MySQL 三表连接

php - 查询以获取每个类别中的项目数(甚至显示包含 0 个项目的空类别)

sql - Redshift : Executing a dynamic query from a string

mysql - 在 MySQL 中创建数组变量

php - 为什么 Joomla 或 #__session 表会删除我的 "session expired"条目而不刷新 html 页面?

c# - 存储过程的执行未运行

mysql - 从 MySQL 中的 select 中删除

sql - 查询以计算演出收入占所有演出总收入的比例

mysql - SQL Select Query with single field as formatted and remaining fields as wildcard

mysql - 如何在MySQL中编写多个连接