楼主: larry_chen

求助一条SQL

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2007-1-15 11:17 | 只看该作者
最初由 atgc 发布
[B]就这样好了,left join也不需要的
[PHP]
select x.PROPERTY_NAME,
       y.PROPERTY_NAME
from   (select a.PROPERTY_NAME,
               b.MATCH_CODE
        from   property a,
               matchs b
        where  a.PROPERTY_CODE=b.position) x,
       (select a.MATCH_CODE,
               b.PROPERTY_NAME
        from   matchs a,
               property b
        where  a.MATCH_CODE=b.PROPERTY_CODE) y
where  x.MATCH_CODE=y.MATCH_CODE;

+---------------+---------------+
| PROPERTY_NAME | PROPERTY_NAME |
+---------------+---------------+
| FW            | football      |
| MF            | golf          |
+---------------+---------------+
2 rows in set (0.00 sec)

[/PHP] [/B]


谢谢楼上的朋友!!!

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2007-1-15 11:24 | 只看该作者
对了,麻烦再问一下,如果我的matchs表里还有别的字段能一起显示出来吗?比如:
mysql> select * from property;
+---------------+---------------+
| PROPERTY_CODE | PROPERTY_NAME |
+---------------+---------------+
| 100010               | FW            |
| 100011        | MF            |
| 100020        | football      |
| 100021        | golf          |
+---------------+---------------+

mysql> select * from matchs;
+----------+------------+------------+
| POSITION | MATCH_CODE |MATCH_DATE |
+----------+------------+------------+
| 100010   | 100020     | 2006-01-15    |
| 100011   | 100021     | 2006-01-12    |
+----------+------------+------------+

结果:
+---------------+---------------+---------------+
| PROPERTY_NAME | PROPERTY_NAME |MATCH_DATE |
+---------------+---------------+---------------+
| FW            | football      | 2006-01-15    |
| MF            | golf          | 2006-01-12    |
+---------------+---------------+---------------+

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
13#
发表于 2007-1-15 17:51 | 只看该作者
能的,你只要在子查询里加上你要的字段即可

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
14#
发表于 2007-1-15 18:15 | 只看该作者
[PHP]
select x.PROPERTY_NAME,
       y.PROPERTY_NAME,
       y.match_date      
from   (select a.PROPERTY_NAME,
               b.MATCH_CODE
        from   property a,
               matchs b
        where  a.PROPERTY_CODE=b.position) x,
       (select a.MATCH_CODE,
               b.PROPERTY_NAME,
               a.match_date
        from   matchs a,
               property b
        where  a.MATCH_CODE=b.PROPERTY_CODE) y
where  x.MATCH_CODE=y.MATCH_CODE;

+---------------+---------------+------------+
| PROPERTY_NAME | PROPERTY_NAME | match_date |
+---------------+---------------+------------+
| FW            | football      | 2006-01-15 |
| MF            | golf          | 2006-01-12 |
+---------------+---------------+------------+
2 rows in set (0.00 sec)
[/PHP]

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2007-1-16 10:50 | 只看该作者
最初由 atgc 发布
[B][PHP]
select x.PROPERTY_NAME,
       y.PROPERTY_NAME,
       y.match_date      
from   (select a.PROPERTY_NAME,
               b.MATCH_CODE
        from   property a,
               matchs b
        where  a.PROPERTY_CODE=b.position) x,
       (select a.MATCH_CODE,
               b.PROPERTY_NAME,
               a.match_date
        from   matchs a,
               property b
        where  a.MATCH_CODE=b.PROPERTY_CODE) y
where  x.MATCH_CODE=y.MATCH_CODE;

+---------------+---------------+------------+
| PROPERTY_NAME | PROPERTY_NAME | match_date |
+---------------+---------------+------------+
| FW            | football      | 2006-01-15 |
| MF            | golf          | 2006-01-12 |
+---------------+---------------+------------+
2 rows in set (0.00 sec)
[/PHP] [/B]


十分感谢!

使用道具 举报

回复
论坛徽章:
0
16#
 楼主| 发表于 2007-1-16 11:08 | 只看该作者
最初由 atgc 发布
[B]能的,你只要在子查询里加上你要的字段即可 [/B]

如果是这种情况呢?
[PHP]
mysql> select * from property;
+---------------+---------------+
| PROPERTY_CODE | PROPERTY_NAME |
+---------------+---------------+
| 100010        | FW            |
| 100011        | MF            |
| 100020        | football      |
| 100021        | golf          |
+---------------+---------------+

mysql> select * from matchs;
+----------+------------+------------+
| POSITION | MATCH_CODE | MATCH_DATE |
+----------+------------+------------+
| 100010   |            | 2006-01-15 |
| 100011   | 100021     | 2006-01-12 |
+----------+------------+------------+

现在的结果是:
+---------------+---------------+---------------+
| PROPERTY_NAME | PROPERTY_NAME | MATCH_DATE    |
+---------------+---------------+---------------+
| MF            | golf          | 2006-01-12    |
+---------------+---------------+---------------+
我希望的结果是:
+---------------+---------------+---------------+
| PROPERTY_NAME | PROPERTY_NAME | MATCH_DATE    |
+---------------+---------------+---------------+
| FW            |               | 2006-01-15    |
| MF            | golf          | 2006-01-12    |
+---------------+---------------+---------------+
[/PHP]
请指教,谢谢。

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
17#
发表于 2007-1-16 19:21 | 只看该作者
[PHP]
mysql> select * from property;
+---------------+---------------+
| PROPERTY_CODE | PROPERTY_NAME |
+---------------+---------------+
| 100010        | FW            |
| 100011        | MF            |
| 100020        | football      |
| 100021        | golf          |
+---------------+---------------+
4 rows in set (0.00 sec)

mysql> select * from matchs;
+----------+------------+------------+
| POSITION | MATCH_CODE | match_date |
+----------+------------+------------+
| 100010   |            | 2006-01-15 |
| 100011   | 100021     | 2006-01-12 |
+----------+------------+------------+
2 rows in set (0.00 sec)

select x.PROPERTY_NAME,
       if(y.PROPERTY_NAME is null,'',y.PROPERTY_NAME) PROPERTY_NAME,
       y.match_date
from   property x,
       (
       select a.position,
              b.property_name,
              a.match_date
       from   matchs a
              left join property b
       on     a.match_code=b.property_code
       ) y
where  x.PROPERTY_CODE=y.position;

+---------------+---------------+------------+
| PROPERTY_NAME | PROPERTY_NAME | match_date |
+---------------+---------------+------------+
| FW            |               | 2006-01-15 |
| MF            | golf          | 2006-01-12 |
+---------------+---------------+------------+
2 rows in set (0.00 sec)

[/PHP]

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2007-1-16 19:33 | 只看该作者
最初由 atgc 发布
[B][PHP]
mysql> select * from property;
+---------------+---------------+
| PROPERTY_CODE | PROPERTY_NAME |
+---------------+---------------+
| 100010        | FW            |
| 100011        | MF            |
| 100020        | football      |
| 100021        | golf          |
+---------------+---------------+
4 rows in set (0.00 sec)

mysql> select * from matchs;
+----------+------------+------------+
| POSITION | MATCH_CODE | match_date |
+----------+------------+------------+
| 100010   |            | 2006-01-15 |
| 100011   | 100021     | 2006-01-12 |
+----------+------------+------------+
2 rows in set (0.00 sec)

select x.PROPERTY_NAME,
       if(y.PROPERTY_NAME is null,'',y.PROPERTY_NAME) PROPERTY_NAME,
       y.match_date
from   property x,
       (
       select a.position,
              b.property_name,
              a.match_date
       from   matchs a
              left join property b
       on     a.match_code=b.property_code
       ) y
where  x.PROPERTY_CODE=y.position;

+---------------+---------------+------------+
| PROPERTY_NAME | PROPERTY_NAME | match_date |
+---------------+---------------+------------+
| FW            |               | 2006-01-15 |
| MF            | golf          | 2006-01-12 |
+---------------+---------------+------------+
2 rows in set (0.00 sec)

[/PHP] [/B]


多谢!

使用道具 举报

回复
论坛徽章:
0
19#
 楼主| 发表于 2007-1-17 17:00 | 只看该作者
如果是这种情况应该如何写SQL?
[PHP]
mysql> select * from property;
+---------------+---------------+
| PROPERTY_CODE | PROPERTY_NAME |
+---------------+---------------+
| 100010        | FW            |
| 100011        | MF            |
| 100020        | football      |
| 100021        | golf          |
+---------------+---------------+

mysql> select * from users;
+-----------+------------+
| USER_CODE | USER_NAME  |
+-----------+------------+
| 100001    | Jack       |
| 100002    | Lee        |
+-----------+------------+

mysql> select * from matchs;
+----------+------------+------------+
| POSITION | MATCH_CODE | USER_CODE  |
+----------+------------+------------+
| 100010   | 100020     | 100001     |
| 100011   | 100020     | 100002     |
+----------+------------+------------+

我希望的结果是:
+---------------+---------------+
| PROPERTY_NAME | USER_NAME     |
+---------------+---------------+
| FW            | Jack           |
| MF            | Lee             |
+---------------+---------------+
[/PHP]
请指教,谢谢。

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
20#
发表于 2007-1-17 18:29 | 只看该作者
你自己写写试试好吗,我已经给你写了很多了,都类似的

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表