我有两张桌子。
第一,卡德
身份证,汽车,发动机,齿轮
第二,标签
ID、标签、值
我要做的是,把这个记录下来
Cardb:1,Punto,3500cc,汽车
如果要向用户显示此行,我会:
mysql_query(Select * from cardb WHERE ID=1);
foreach($field as $value)SELECT label FROM labels WHERE value='$value';
然后向用户显示标签(数据库中存储的值的用户友好版本)。
我的问题是,有没有一种方法可以将cardb中字段的值与其对应的标签表链接起来,而不必进行2次查询??
CARDB示例
ID:汽车:发动机:齿轮
1:Picanto:1100cc:自动;
标签示例
标签:ID:值:标签
标签:1:1100cc:1100发动机容量
(cc)';
标签:2:手动:“自动传输”;
目标搜索标签表中每个卡片字段的标签并将其显示出来
最佳答案
因此,表之间的唯一链接是,标签的值字段包含字段标签中文本的较长版本,而这些较短版本用于CarDB、野外汽车、发动机和齿轮。您希望查询检索cardb的内容,但是使用汽车、发动机和齿轮中的长版本标签,而不是表中的短版本标签。您需要的查询是:
SELECT c.ID,l1.value car,l2.value engine,l3.value gear FROM cardb c
LEFT OUTER JOIN labels l1 on c.car=l1.label
LEFT OUTER JOIN labels l2 on c.engine=l2.label
LEFT OUTER JOIN labels l3 on c.gear=l3.label;