0

基本上我想选择所有 car_color=yellow & car_gear=Manual 的汽车。我怎样才能做到这一点?我应该写什么而不是“???” ? 我的桌子结构错了吗?

到目前为止我做了什么:

$sql = "SELECT * FROM
    A
JOIN 
    B
ON
    A.id=B.Aid WHERE ???";

表 A

id  title
1   Toyota
2   Volvo

表 B

id  Aid     attr_name   attr_val
0   1       car_year    2012
1   1       car_color   red
2   1       car_km      1000
3   1       car_gear    manual
4   2       car_color   black
5   2       car_km      0
6   2       car_gear    Automat
4

1 回答 1

0

where我的建议是,如果您希望某个子句正常工作,您需要重新设计您的表格。就像是:

create table tableB
(
    id int,
    Aid int,
    car_year int,
    car_color varchar,
    car_km int,
    car_gear varchar
)

然后你可以写你的SQL

SELECT * 
FROM A
JOIN B
    ON A.id=B.Aid 
WHERE car_color='yellow'
    AND car_gear='Manual'

或者你可以更进一步,为每个汽车变量创建一个单独的表——年份、颜色、公里、档位。这实际上取决于您的需求,您不想过度使用它。

于 2012-04-12T22:07:09.813 回答