Mysql 通过外键获取标签

Mysql 通过外键获取标签,mysql,doctrine-orm,Mysql,Doctrine Orm,这些是我的桌子 我的桌子是空的 用户表 id Name Sex 1 bob 1 2 taro 1 3 can 2 性爱桌 id label 1 male 2 female User.sex是sex.id的外键 我想得到的是下面这个 姓名性别 鲍勃男 芋头母 女性可以吗 $query = $em->createQuery( SELECT a,id,a.sex FROM UserBundle:User a) 上面说 [Semantical Error] line

这些是我的桌子

我的桌子是空的

用户表

id Name Sex
1  bob   1
2  taro  1
3  can   2
性爱桌

id  label
1   male
2   female
User.sex是sex.id的外键

我想得到的是下面这个

姓名性别 鲍勃男 芋头母 女性可以吗

$query = $em->createQuery(
SELECT a,id,a.sex
FROM UserBundle:User a)
上面说

[Semantical Error] line 0, col 97 near 'sex': Error: Invalid PathExpression. Must be a StateFieldPathExpression
我想身份可以帮助解决这个问题。 所以我试着

$query = $em->createQuery(
SELECT a,id,IDENTITY(a.sex) AS sex
FROM UserBundle:User a)

$user = $query->getResult();
$user[0]['sex']  // 
它显示“1”(id),但我想显示标签名称

请给我一些提示


非常感谢

在SQL中完成此任务的标准方法是使用子查询。大意是:

Select u.name s.label
From user u, sex s 
where s.ID in (Select sex
             from u
             where u.id = 1);
将为您获取任何带有标记性别的用户记录。 因此,您需要修改准备好的语句,以便运行子查询

对于结果集中的多个记录,可以考虑使用内部联接来表达SQL语句。

Select u.name s.label
from user u inner join sex s
on u.sex = s.id;
将为您提供一组匹配的每个用户的姓名及其性别标签


看起来您正在使用类似于脚本语言准备语句的功能(是php吗?),因此请务必仔细阅读您的语言语法,正确设置准备语句以避免恶意用户的注入攻击。

谢谢,这是非常有用的答案