Mysql 从值内的不同列或表调用变量

Mysql 从值内的不同列或表调用变量,mysql,Mysql,我的数据库中有一个名为ProductInfo的表。此表包含特定产品的文字说明。只有一个名为说明的文本字段、图片url等 我有另一个名为位置的表。在这个表中,我有公司名称、城市名称(纽约、波士顿、奥马哈等) 我希望能够将位置表中的变量插入产品信息表中描述的文本字段中 所以。。在我的ProductInfo表中,我有一个名为“Widget”的条目,它有一个描述。我希望能够做到以下几点: 这个小部件是金钱能买到的最好的小部件。如果您居住在($city1,$city2,$city3)区域,则您只需从($c

我的数据库中有一个名为
ProductInfo
的表。此表包含特定产品的文字说明。只有一个名为
说明
的文本字段、图片url等

我有另一个名为
位置
的表。在这个表中,我有公司名称、城市名称(纽约、波士顿、奥马哈等)

我希望能够将
位置
表中的变量插入
产品信息
表中描述的文本字段中

所以。。在我的
ProductInfo
表中,我有一个名为“Widget”的条目,它有一个描述。我希望能够做到以下几点:

这个小部件是金钱能买到的最好的小部件。如果您居住在(
$city1
$city2
$city3
)区域,则您只需从(
$company\u name
)通过此小部件即可。(
$company\u name
)专门为居住在(
$city 4
)、(
$state
)地区的客户提供(
$service1

任何人都可以提供一些关于我如何能够做到这一点的见解。我想这可能是在其他变量中嵌套变量,但我不确定


提前感谢。

Dax,我没有多少信息要说,但这里有一个查询,它将合并三个表中的字段:

Location
  id integer not null autoincrement primary key
  company_id integer not null
  city varchar not null
  FOREIGN KEY company_id REFERENCES company.id ON DELETE CASCADE ON UPDATE CASCADE

Company
  id integer not null autoincrement primary key
  companyname varchar not null
  service varchar not null
  city varchar not null
  state varchar not null
  ....other fields...

ProductInfo
  id integer not null autoincrement primary key
  company_id integer not null
  productname varchar ....
  FOREIGN KEY company_id REFERENCES company.id ON DELETE CASCADE ON UPDATE CASCADE
此查询将生成您需要的信息

SELECT group_concat(DISTINCT l.city ORDER BY l.city SEPARATOR ', ') AS city
  , c.companyname
  , c.service
  , c.city
  , c.state
FROM location l
INNER JOIN productInfo pi ON (pi.company_id = l.company_id)
INNER JOIN company c ON (pi.company_id = c.id)
WHERE pi.id = 589
GROUP BY pi.id
主要的技巧是通过
GROUP\u CONCAT

请参阅:
如果使用
group\u concat
还必须包含
groupby
子句


祝你好运。

Dax,我的信息很少,但这里有一个将三个表中的字段组合在一起的查询:

Location
  id integer not null autoincrement primary key
  company_id integer not null
  city varchar not null
  FOREIGN KEY company_id REFERENCES company.id ON DELETE CASCADE ON UPDATE CASCADE

Company
  id integer not null autoincrement primary key
  companyname varchar not null
  service varchar not null
  city varchar not null
  state varchar not null
  ....other fields...

ProductInfo
  id integer not null autoincrement primary key
  company_id integer not null
  productname varchar ....
  FOREIGN KEY company_id REFERENCES company.id ON DELETE CASCADE ON UPDATE CASCADE
此查询将生成您需要的信息

SELECT group_concat(DISTINCT l.city ORDER BY l.city SEPARATOR ', ') AS city
  , c.companyname
  , c.service
  , c.city
  , c.state
FROM location l
INNER JOIN productInfo pi ON (pi.company_id = l.company_id)
INNER JOIN company c ON (pi.company_id = c.id)
WHERE pi.id = 589
GROUP BY pi.id
主要的技巧是通过
GROUP\u CONCAT

请参阅:
如果使用
group\u concat
还必须包含
groupby
子句


祝你好运。

解决方法在很大程度上取决于你需要多大的灵活性。只需将连接的值从一个记录插入到另一个记录中是很容易的,并且可以将多个记录中的值连接在一起并执行相同的操作。在不使用存储过程(或外部脚本)的情况下执行此操作可能会很棘手。你能给出一些表内容的确切例子(表明你正在使用的关系)吗?@Johan,我认为Dax正在寻找一个纯SQL的答案。这个问题的解决方案在很大程度上取决于你需要它的灵活性。只需将连接的值从一个记录插入到另一个记录中是很容易的,并且可以将多个记录中的值连接在一起并执行相同的操作。在不使用存储过程(或外部脚本)的情况下执行此操作可能会很棘手。你能发布一些表内容的确切示例(指示你正在使用的关系)吗?@Johan,我认为Dax正在寻找一个纯SQL的答案