[英]Select all the contents of a mysql table, and echo a list of the corresponding categories
我從事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
我將如何使用if語句使腳本生成僅與該“過濾器”相對應的Makers列表? (就像X然后解析Cars表,否則Y僅僅解析該第三表指定的Cars表中的汽車)
我認為它是一個簡單的功能,但我似乎無法想象它,也找不到合適的例子。
查詢非常簡單。 。 。 一個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;
嘗試這個:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.