Синхронизиране на информация

sentenello

Registered
Здравейте,
Първо да кажа че информацията я вземам от няколко таблици и резултатите които искам да синхронизирам ги групирам с group_concat

Таблица 1 има:
Код:
zalogime   starkoef
1/X              2.50
1/2              5.00
1/1              3.00
X/X              7.50
X/2              12.50
Таблица 2:
Код:
zalogime   novkoef     
1/X               7.60 
1/1              3.60
1/2              12.60   
X/2              5.60
X/X              2.60

В заявката имам

Код:
Group_concat(cho.koef   SEPARATOR '_')       AS starkoef,
Group_concat(odd.koef  SEPARATOR '_')       AS novkoef,
Group_concat(cho.name  SEPARATOR '_')                           AS imezalog

Така и не мога да ги накарам да излизат правилно.. В момента ми излизат
starkoef - 2.50 5.00 3.00 7.50 12.50
newkoef - 3.60 7.60 5.60 12.60 2.60

а те трябва да излизат едно под друго за еднаквите zalogime, като главното е всеки ред да е по един и същ начин.
Пример:
red1: 1/X 1/1 1/2 X/2 X/X
red2: 1/X 1/1 1/2 X/2 X/X
red3: 1/X 1/1 1/2 X/2 X/X


Ето и кода с който извеждам тези неща
Код:
SELECT 
m.id							as mid,
b.name							as zalogime,

Concat(m.hometeam, ' - ', m.awayteam)    AS teams,
Group_concat(cho.koef   SEPARATOR '_')       AS koef,
Group_concat(odd.koef  SEPARATOR '_')       AS oddskoef,
 m.start_date                             AS start_date,
Group_concat(cho.name  SEPARATOR '_')                           AS imezalog
FROM   `match` m 
       LEFT JOIN `bettype` b 
              ON b.match_id = m.id 
		LEFT JOIN `choicetype` cho 
              ON cho.bet_id = b.id 
			  LEFT JOIN `oddmove` odd 
              ON odd.id = cho.id
	    
WHERE m.id ='$val[mid]' AND b.name = 'Half-Time / Full-Time'
GROUP BY m.id ");
while($row2 = mysql_fetch_array($query2))
{

list($zalog11,$zalog12,$zalog1x,$zalog21,$zalog22,$zalog2x,$zalogx1,$zalogx2,$zalogxx,) = explode('_', $row2['imezalog']);
list($koef11,$koef12,$koef1x,$koef21,$koef22,$koef2x,$koefx1,$koefx2,$koefxx,) = explode('_', $row2['koef']);
list($newkoef11,$newkoef12,$newkoef1x,$newkoef21,$newkoef22,$newkoef2x,$newkoefx1,$newkoefx2,$newkoefxx,) = explode('_', $row2['oddskoef']);
 
Защо правите такива сложни заявки? Щом си сортирал веднъж информацията с една функция ще си филтрираш тази информация. Не разбирам понякога защо се правят такива големи заявки като ти трябва да изведеш стойностите и да ги обработиш :)
 
Не можах да се справя както ти казваш. Да селектна всички полета и после да изведа само това което искам и то както искам подредено, след няколкостотин опита да се справя с проблема ми от тази тема, сега се сетих че всеки път опитвам да давам order на самите полета от group_concat, но така и не се сетих да пробвам да дам на самата таблица такъв order.. :) Сега го сложих и всичко изглежда наред и точно както ми трябва. Ще проверя дали всичко работи както трябва и ще си едитна поста
 
След редица тестове разбрах че кода работи правилно когато задам order by на самата таблица, но тогава въпреки че ми нарежда коефициентите правилно един под друг, точно на залога който трябва.. единия ред е така

1/X 1/1 1/2 X/2
а другия е
1/1 X/2 1/X 1/2

Пробвах да дам order на всяко едно поле от group_concat, но така всичко се обърква
 
Когато използвам заявка без да ги групирам всичко си излиза ОК
ето я заявката
Код:
SELECT m.id as mid, b.name as zalogime, Concat(m.hometeam, ' - ', m.awayteam) AS teams, cho.name AS imezalog, cho.koef AS koef, odd.koef AS oddskoef, m.start_date AS start_date FROM `match` m LEFT JOIN `bettype` b ON b.match_id = m.id LEFT JOIN `choicetype` cho ON cho.bet_id = b.id LEFT JOIN `oddmove` odd ON odd.id = cho.id WHERE m.id ='807565' AND b.name = 'Half-Time / Full-Time' order by cho.name ASC

Ето и резултата


Това трябва да го групирам и да стане по същия начин но на един ред :D Както е сега, да си отговаря всеки коеф да всеки залог
 
Най-накрая намерих решението.. :o

Каквото и да правех с подреждането винаги стигах най-много до там че при проверка 10 реда изкарват всичко наред и на 11-я има разминаване. Правех проверка в БД точно за този резултат и така не разбирах как може да ми вади друг коеф. Оказа се че при извеждането на резултатите съм се объркал и съм написал кода ето така

Код:
echo"

X/1               X/2 
$koefx1     $koefx1
";

Няма как да изведе правилния коеф за Х/2 като съм объркал променливата :roll: :roll: Едно леко невнимание ми отне 2 дни, за да разбера че имам допусната лека грешка в променливите, а не в заявката
 

Back
Горе