我有一个名为Products的表,其中有一个名为product and airport的列。 机场有多个值 我需要一个SQL语句,通过该语句,我将能够从列机场获取一个机场的产品名称(具有多个值,如伯明翰国际机场,卢顿机场,希思罗机场,盖特威克机场) 例如如果我想要机场希思罗机场的所有产品,我该怎么做? 我会使用索引,如果是,怎么样? 以下是示例数据:
mysql> SELECT * FROM products order by product;
| id | product | price | description | type | airport |
| 1 | Benson and Hedges Special filter | £28.00 | Cigarettes, Lighter and filter | Tobacco | Birmingham International, Luton Airport, Heathrow, Gatwick |
-----------------------
1 row in set (0.00 sec)
答案 0 :(得分:0)
我建议您以这种方式创建其他表:
Product (id, product, price, description)
ProductAirports (productId, airportId)
Airport (id, name)
然后,如果您想在伯明翰国际机场的航空港口提供产品,您可以写
select
p.id, p.product
from Product p
inner join ProductAirports pa on pa.productId = p.id
inner join Airport a on a.id = pa.airportId
where
a.name = 'Birmingham International'
答案 1 :(得分:0)
为机场创建新表,例如
CREATE TABLE "AIRPORT"
(
"AIRPORT_ID" NUMBER ,
"AIRPORT_NAME" CHAR
)
并通过链接表
将您的表与AIRPORT相关联CREATE TABLE "CITS_USER"."L_YOUR_TABLE_AIRPORT"
(
"L_YOUR_TABLE_AIRPORT_ID" NUMBER NOT NULL ENABLE,
"YOUR_TABLE_ID" NUMBER NOT NULL ENABLE,
"AIRPORT_ID" NUMBER NOT NULL ENABLE
CONSTRAINT "FK_L_YOUR_TABLE_AIRPORT_YOUR_TABLE" FOREIGN KEY ("YOUR_TABLE_ID") REFERENCES "YOUR_TABLE" ("YOUR_TABLE_ID") ENABLE,
CONSTRAINT "FK_L_L_YOUR_TABLE_AIRPORT_AIRPORT" FOREIGN KEY ("AIRPORT_ID") REFERENCES "AIRPORT" ("AIRPORT_ID") ENABLE
)
所以你的查询将是
select yt.product from
your_table yt
join L_YOUR_TABLE_AIRPORT yta on yta.YOUR_TABLE_ID = yt.YOUR_TABLE_ID
join AIRPORT ap on ap.AIRPORT_ID = yta.AIRPORT_ID
where ap.NAME = 'Luton Airport'