基本上我想选择所有car_color = yellow& amp; car_gear =手册。 我怎样才能做到这一点?我应该写什么而不是“???” ? 我的桌子结构错了吗?
到目前为止我做了什么:
$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
答案 0 :(得分: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'
或者您可以更进一步,为每个汽车变量创建一个单独的表 - 年份,颜色,公里,齿轮。这实际上取决于你的需求,你不想过度使用它。