Mysql 一个表中两个表的信息

Mysql 一个表中两个表的信息,mysql,sql,Mysql,Sql,我有这两张桌子,它们是这样布置的 表1 +------+----------+-----+--------+ | Year | Runner | Age | Result | +------+----------+-----+--------+ | 2004 | Runner 1 | 3 | Won | | 2004 | Runner 2 | 4 | Lost | | 2004 | Runner 3 | 3 | Lost | | 2005 | Runner 1 |

我有这两张桌子,它们是这样布置的

表1

+------+----------+-----+--------+
| Year |  Runner  | Age | Result |
+------+----------+-----+--------+
| 2004 | Runner 1 |   3 | Won    |
| 2004 | Runner 2 |   4 | Lost   |
| 2004 | Runner 3 |   3 | Lost   |
| 2005 | Runner 1 |   3 | Lost   |
| 2005 | Runner 2 |   3 | Lost   |
| 2005 | Runner 3 |   4 | Won    |
| 2006 | Runner 1 |   4 | Won    |
| 2006 | Runner 2 |   3 | Lost   |
| 2006 | Runner 3 |   4 | Lost   |
+------+----------+-----+--------+
表2

+-------+----------+-----+
| RCNum |  Runner  | Age |
+-------+----------+-----+
|     1 | Runner 1 |   3 |
|     2 | Runner 2 |   4 |
|     3 | Runner 3 |   3 |
|     4 | Runner 4 |   3 |
|     5 | Runner 5 |   3 |
+-------+----------+-----+
现在我将使用

    $numbers = mysql_query("SELECT age,
        sum(case when result <> ''then 1 else 0 end) Sec1Picks,
        sum(case when result = 'Won' then 1 else 0 end) Sec1Wins
    FROM table1
    GROUP BY age
    ORDER BY age ASC");

while($row = mysql_fetch_array($numbers, MYSQL_ASSOC)) {
echo "(".$row['Age']."yo) ".$row['Sec1Wins']."-".$row['Sec1Picks']; }
但是,对于插入到rcnums列中的每个数字,它将在Picks/Wins列中再次添加统计信息

在Picks/Wins列中,我只想在表1中计算3yo是60和2,而不是420和14。如何更改编码以实现此目的?

选择t2.age
SELECT t2.age
     , SUM(CASE WHEN t1.result <> '' THEN 1 ELSE 0 END) Sec1Picks
     , SUM(CASE WHEN t1.result = 'Won' THEN 1 ELSE 0 END) Sec1Wins
     , GROUP_CONCAT(DISTINCT t2.rcnum ORDER BY rcnum SEPARATOR ' ') rcnums
  FROM table2 t2
  LEFT
  JOIN table1 t1
    ON t1.runner = t2.runner
 GROUP 
    BY t2.age;
,求和(t1.result“”时为1,其他0结束时为1)秒1分 ,SUM(当t1.result='Won'然后1或0结束时的情况)Sec1Wins ,组_CONCAT(按rcnum分隔符“”的不同t2.rcnum顺序)rcnums 来自表2 t2 左边 加入表1 t1 在t1.runner=t2.runner上 团体 t2.5岁;
很抱歉,这些表在不同的数据库中吗?标题是这样说的,但在你的问题中没有明确说明。对于不同的数据库,我假设不同的数据库instances@Leo我想OP的意思是“桌子”是的,对不起,我的意思是,两张桌子合二为一。我注意到有些东西现在不太适合它!假设我正在查看3yo跑步者的数据,数据为1-5。。对于每个RCNum,这是重复的,所以如果RCNum列中有4个,那么这个数字将更改为4-20,而我希望它保持为1-5,不管怎样,修复这个问题?
+-----------+-----------+----------+---------------------------+
|   age     | Sec1Picks | Sec1Wins |          rcnums           |
+-----------+-----------+----------+---------------------------+
|         3 |       420 |       14 | 8 9 13 21 22 25 27        |
|         4 |       352 |       24 | 6 7 11 16 17 19 20 29     |
|         5 |       470 |       10 | 1 2 3 5 10 15 18 23 24 26 |
|         6 |        64 |        6 | 12 14                     |
|         7 |        25 |        1 | 4                         |
|         8 |         7 |        0 | NULL                      |
|         9 |         2 |        0 | 28 30                     |
+-----------+-----------+----------+---------------------------+
SELECT t2.age
     , SUM(CASE WHEN t1.result <> '' THEN 1 ELSE 0 END) Sec1Picks
     , SUM(CASE WHEN t1.result = 'Won' THEN 1 ELSE 0 END) Sec1Wins
     , GROUP_CONCAT(DISTINCT t2.rcnum ORDER BY rcnum SEPARATOR ' ') rcnums
  FROM table2 t2
  LEFT
  JOIN table1 t1
    ON t1.runner = t2.runner
 GROUP 
    BY t2.age;