объединить результат запроса в строку

Я получаю результат в БД в виде 3 строк (см. Ссылку на изображение ниже).

введите описание изображения здесь

Используется оператор 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|

1

Решение

Ты можешь использовать 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;
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
);

Вы присоединитесь к tevmkt с tev от ev_id в 1-к-1 связь.

Вы фильтруете записи на tevmkt с использованием name поле и записи на tev с использованием start_time поле.

Теперь вы присоединяетесь к tevmkt с tevoc от ev_mkt_id в отношении один ко многим, за то, что я вижу 1-к-3.

Ваша цель — иметь 1-к-1 также. Глядя на ваш пример, я вижу три строки для каждого события и заключаю, что они:

  • 1 ряд для хозяев поля, где fb_result является ЧАС;
  • 1 ряд для выездной команды, где fb_result является ;
  • 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'
;
0

По вопросам рекламы [email protected]