在字符串中连接查询结果

时间:2015-08-04 01:23:10

标签: php sql informix

我得到3行的db结果(请参见下面的图片链接)。

enter image description here

使用的sql语句是

select tevmkt.ev_mkt_id, tevmkt.name, tevmkt.ev_id, tevoc.ev_oc_id, 
       tevoc.desc, tevoc.fb_result, tevoc.lp_num, tevoc.lp_den, 
       tev.start_time
from tevmkt, tev,tevoc
where tevmkt.name = '|Match Result|' and tev.ev_id=tevmkt.ev_id and 
      tevoc.ev_mkt_id=tevmkt.ev_mkt_id and tev.start_time>=Today;

我想使用php将3行中的每一行连接成字符串,或者使用SQL语句。

因此,前3行将显示为;

632274|Match Result||Draw||Aldershot Town||Arsenal FC|

接下来的3行

637799|Match Result||Draw||Southend United||Oxford United|

2 个答案:

答案 0 :(得分:0)

您可以使用concat

基于查询的示例

select CONCAT(tevmkt.ev_mkt_id, tevmkt.name, tevmkt.ev_id, tevoc.ev_oc_id, 
       tevoc.desc, tevoc.fb_result, tevoc.lp_num, tevoc.lp_den, 
       tev.start_time)
from tevmkt, tev,tevoc
where tevmkt.name = '|Match Result|' and tev.ev_id=tevmkt.ev_id and 
      tevoc.ev_mkt_id=tevmkt.ev_mkt_id and tev.start_time>=Today;

答案 1 :(得分:0)

我看到你的模型看起来像这样:

CREATE TABLE tevmkt(
    ev_mkt_id   INT,
    ev_id       INT,
    name        CHAR(25)
);

CREATE TABLE tev(
    ev_id       INT,
    start_time  DATETIME YEAR TO SECOND
);

CREATE TABLE tevoc(
    ev_mkt_id   INT,
    desc        CHAR(25),
    fb_result   CHAR(1),
    lp_num      SMALLINT,
    lp_den      SMALLINT
);

tevmkttev ev_id加入 1对1 关系。

您使用tevmkt字段对name上的记录进行过滤,使用tev字段过滤start_time上的记录。

现在,您加入tevmkt tevocev_mkt_id {1}}的一对多关系,我看到 1-to-3

您的目标也是 1对1 。看着你的例子我看到每个事件有三行,我得出的结论是:

  • 主队排1行,其中fb_result H ;
  • 离开团队的一行,其中fb_result A ;
  • 结果排1行,我不确定这一行所以我会小心处理;

如果是这种情况,您可以使用下一个joins和过滤器获取结果集:

SELECT
    tevmkt.ev_mkt_id,
    tevmkt.name,
    (
        TRIM(tevoc_result.desc) ||
        TRIM(tevoc_away.desc)   ||
        TRIM(tevoc_home.desc)
    ) AS desc
FROM tevmkt
    JOIN tev ON 
        tev.ev_id = tevmkt.ev_id 
    JOIN tevoc tevoc_result ON 
        tevoc_result.ev_mkt_id = tevmkt.ev_mkt_id 
    JOIN tevoc tevoc_away ON 
        tevoc_away.ev_mkt_id = tevmkt.ev_mkt_id 
    JOIN tevoc tevoc_home ON 
        tevoc_home.ev_mkt_id = tevmkt.ev_mkt_id 
WHERE
    tevmkt.name = '|Match Result|'
    AND tev.start_time >= TODAY
    AND tevoc_result.fb_result NOT IN ('H', 'A')
    AND tevoc_away.fb_result = 'A'
    AND tevoc_home.fb_result = 'H'
;