Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:变量名和列数_Mysql_Sql_Select_Join - Fatal编程技术网

Mysql SQL:变量名和列数

Mysql SQL:变量名和列数,mysql,sql,select,join,Mysql,Sql,Select,Join,我想执行一个数据库搜索,返回所有数据,结果是一行中有一个foo数据 我有三张桌子:foo、bar和barbar foo是主表。bar中的多个记录可能具有指向foo主键的相同外键,barbar中的零个或一个记录可能具有指向bar中每个记录的主键的外键 我理想的SQL查询如下所示,但不起作用: SELECT foo.*, barbar.text AS CONCAT('barbar_', barbar.barPK, '_text'), bar.text AS CONCAT('bar_', bar.P

我想执行一个数据库搜索,返回所有数据,结果是一行中有一个foo数据

我有三张桌子:foo、bar和barbar

foo是主表。bar中的多个记录可能具有指向foo主键的相同外键,barbar中的零个或一个记录可能具有指向bar中每个记录的主键的外键

我理想的SQL查询如下所示,但不起作用:

SELECT

foo.*,
barbar.text AS CONCAT('barbar_', barbar.barPK, '_text'),
bar.text AS CONCAT('bar_', bar.PK, '_text')

FROM

foo
LEFT JOIN bar ON foo.PK = bar.fooPK
LEFT JOIN barbar ON bar.PK = barbar.barPK

ORDER BY foo.PK LIMIT 0, 200
如果只有一个bar/barbar组合存在,则答案有foo字段bar.text和barbar.text。如果存在多个引用foo的bar/barbar组合,我希望返回foo字段以及每个组合的bar/barbar字段(bar.text和barbar.text)

您认为选择所有数据(限于foo(0200))的最简单方法是什么


我希望在一次查询中就可以做到这一点,并且我不必再为来自foo的每200条记录查询一次。

我不确定您想做什么,但您无法根据结果行设置列名。你甚至不知道列名,你怎么会使用这样的结果呢。如果有两行,列的名称是什么?第一行的名称,还是第二行的名称?总而言之:这可能是一个错误。您可以使用不同的方法。也许描述一下你用这个想法试图解决的原始问题,可能有更好的方法。考虑到需求,我不明白查询有什么问题。我同意动态列名不能工作,但为什么需要它们?我需要动态名称,因为如果存在多个bar/barbar,它们需要不同的名称@Solarflare:我只需要所有尽可能简单的数据,你能给出一个你想要得到的输入和输出示例(包括列名),或者可能是两个示例,这样我们就可以看到列名了吗?我仍然不知道你想做什么。我不确定你想做什么,但是你不能根据结果行设置列名。你甚至不知道列名,你怎么会使用这样的结果呢。如果有两行,列的名称是什么?第一行的名称,还是第二行的名称?总而言之:这可能是一个错误。您可以使用不同的方法。也许描述一下你用这个想法试图解决的原始问题,可能有更好的方法。考虑到需求,我不明白查询有什么问题。我同意动态列名不能工作,但为什么需要它们?我需要动态名称,因为如果存在多个bar/barbar,它们需要不同的名称@Solarflare:我只需要所有尽可能简单的数据,你能给出一个你想要得到的输入和输出示例(包括列名),或者可能是两个示例,这样我们就可以看到列名了吗?我还是不知道你想做什么。