关联同一表中2列的数据。 [英] Relating data for 2 columns in the same table.
问题描述
您好,我从数据库中查询了两个检索地址信息,问题是有2列,'cd_cidade'和'cd_cidade_comercial',它们是表'prestador'中的城市代码。我们有一个名为'cidade'的表,其中'cd_cidade'列为主键,列'nm_cidade'是表中每个代码的名称。
如何从表'cidade'中检索名称以使用它代替'cd_cidade'和'cd_cidade_comercial'。
顺便说一下查询是:
Hello, I made a query two retrieve address information from the database, the problem is that there are 2 columns, 'cd_cidade' and 'cd_cidade_comercial', which are city codes in the table 'prestador'. and we have a table named 'cidade' where have the 'cd_cidade' column as primary key and the column 'nm_cidade' that is the name for each code in the table.
How can I retrive the name from table 'cidade' to use it in place of 'cd_cidade' and 'cd_cidade_comercial'.
By the way the query is:
SELECT COUNT (a.cd_atendimento),
p.cd_prestador,
p.nm_prestador,
p.ds_endereco,
p.nr_endereco,
p.ds_bairro,
p.ds_complemento,
p.nr_cep,
p.cd_cidade,
p.ds_endereco_comercial,
p.nr_endereco_comercial,
p.ds_bairro_comercial,
p.ds_complemento_comercial,
p.ds_cep_comercial,
p.cd_cidade_comercial,
esp.ds_especialid,
decode (p.cd_tip_presta, 1, 'Médico', 2, 'Odontologo')
FROM dbamv.prestador p,
dbamv.atendime a,
dbamv.esp_med e,
dbamv.especialid esp
WHERE p.cd_prestador = a.cd_prestador
AND p.cd_prestador = e.cd_prestador
AND e.cd_especialid = esp.cd_especialid
AND p.cd_tip_presta in (1,2)
AND A.tp_atendimento = 'I'
AND A.dt_atendimento between '01/jan/2012' and '31/dez/2012'
AND A.dt_alta is not null
GROUP BY p.cd_prestador,
p.nm_prestador,
p.ds_endereco,
e.cd_especialid,
esp.ds_especialid,
p.tp_prestador,
p.cd_tip_presta,
p.nr_endereco,
p.ds_bairro,
p.ds_complemento,
p.nr_cep,
p.cd_cidade,
p.ds_endereco_comercial,
p.nr_endereco_comercial,
p.ds_bairro_comercial,
p.ds_complemento_comercial,
p.ds_cep_comercial,
p.cd_cidade_comercial
谢谢你们。任何问题随时都可以回复。
Thank you all. Any questions feel free to reply.
推荐答案
没有涉及你的查询(可能搞砸了 - 我会把这一点留给你)你需要添加一个加入。如果我们只是得到几个字段:
Without wading through your query (and possibly messing it up - I'll leave that bit to you) you need to add a JOIN. If we just get a couple of fields:
SELECT p.cd_prestador, c.nm_cidade
FROM prestador p
JOIN cicade c
ON p.cd_cidade=c.cd_cicade
尝试一下,您应该明白我的意思。
Try that and you should see what I mean.
在任何情况下都不应该混合ANSI连接隐式连接。
试试这个:
You should in any case not mix ANSI joins with implicit joins.
Try this:
SELECT COUNT (a.cd_atendimento),
p.cd_prestador,
p.nm_prestador,
p.ds_endereco,
p.nr_endereco,
p.ds_bairro,
p.ds_complemento,
p.nr_cep,
p.cd_cidade,
p.ds_endereco_comercial,
p.nr_endereco_comercial,
p.ds_bairro_comercial,
p.ds_complemento_comercial,
p.ds_cep_comercial,
p.cd_cidade_comercial,
esp.ds_especialid,
decode (p.cd_tip_presta, 1, 'Médico', 2, 'Odontologo'),
c1.nm_cidade cidade,
c2.nm_cidade cidade_comercial
FROM dbamv.prestador p,
dbamv.atendime a,
dbamv.esp_med e,
dbamv.especialid esp,
cidade c1
cidade c2
WHERE p.cd_prestador = a.cd_prestador
AND p.cd_prestador = e.cd_prestador
AND e.cd_especialid = esp.cd_especialid
AND p.cd_cidade=c1.cd_cidade
AND p.cd_cidade_comercial=c2.cd_cidade
AND p.cd_tip_presta in (1,2)
AND A.tp_atendimento = 'I'
AND A.dt_atendimento between '01/jan/2012' and '31/dez/2012'
AND A.dt_alta is not null
GROUP BY p.cd_prestador,
p.nm_prestador,
p.ds_endereco,
e.cd_especialid,
esp.ds_especialid,
p.tp_prestador,
p.cd_tip_presta,
p.nr_endereco,
p.ds_bairro,
p.ds_complemento,
p.nr_cep,
p.cd_cidade,
p.ds_endereco_comercial,
p.nr_endereco_comercial,
p.ds_bairro_comercial,
p.ds_complemento_comercial,
p.ds_cep_comercial,
p.cd_cidade_comercial,
c1.nm_cidade,
c2.nm_cidade
这篇关于关联同一表中2列的数据。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!