关联同一表中2列的数据。 [英] Relating data for 2 columns in the same table.

查看:61
本文介绍了关联同一表中2列的数据。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我从数据库中查询了两个检索地址信息,问题是有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆