如何筛选列以选择特定关键字

时间:2014-02-05 11:39:31

标签: mysql sql database

我有一个名为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)

2 个答案:

答案 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'