我一直在研究我的PHP技能,但我甚至不知道如何开始构建这个函数。
假设我在名为Cars的表中有20个条目,并且这些汽车中的每一个都有自己唯一的自动增量ID,而另一列中的制造商的ID。然后,我有另一张表,其中包含汽车制造商的名称。因此,例如,5辆车有汽车制造商ID A,另外3辆有汽车制造商ID B等等(其中A和B是汽车制造商的id号)。
我如何搜索汽车表,然后按字母顺序回显汽车制造商列表?
我可以弄清楚如何通过每次找到一个名字来回显汽车制造商的名单,但这意味着拥有相同的汽车制造商名称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
如何使脚本生成一个Makers列表,该列表仅使用if语句对应于此“过滤器”? (如果X然后解析Cars表,否则Y只解析第三个表指定的Cars表中的汽车)
我认为这是一个简单的功能,但我似乎无法在脑海中描绘它,也找不到合适的例子。
答案 0 :(得分:0)
查询相当简单。 。 。 join
和distinct
以及order by
。
对字段名称做出一些假设:
select distinct m.maker
from cars c join
makers m
on c.makerid = m.makerid
order by m.maker;
如果您有第三张表,则可以使用额外的join
或where
条件处理此问题:
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;
答案 1 :(得分:0)
试试这个:
SELECT DISTINCT A.makers
FROM Makers A
INNER JOIN Cars C ON A.MakerId = C.MakerId
ORDER BY A.makers
第二个问题
SELECT DISTINCT A.makers
FROM Makers A
INNER JOIN Cars C ON A.MakerId = C.MakerId
LEFT JOIN CarFilter CF ON C.CarId = CF.CarId
WHERE CASE WHEN **Condition to parse Cars table** THEN 1
WHEN **Condition to parse Cars filter table** THEN 1 CF.Id
ELSE 1
END) IS NOT NULL
ORDER BY A.makers