Извеждане от 2-те таблици с LEFT JOIN

sentenello

Registered
Здравейте,
Имам тази заявка
Код:
$zaqvka1111 = mysql_query("SELECT s.* FROM `sport` AS s LEFT JOIN `event` AS e ON s.`id`=e.`sportid` ORDER BY s.`id` DESC");

Въпроса ми е как да изведа s id-то, и e.name ?
 
SELECT s.id, e.name?

...

$row['id']
$row['name']

Ако имаш едни и същи полета в двете таблици - s.name AS sname, e.name AS ename

$row['sname']
$row['ename']
 
Преправих си кода ето така:

Код:
$zaqvka1111 = mysql_query("SELECT e.* FROM `event` AS e LEFT JOIN `sport` AS s ON s.`id`=e.`sportid` WHERE s.`id`= e.`sportid` ORDER BY e.`id` ASC");

while ($row = mysql_fetch_array($zaqvka1111)) 
{  
echo "$row[name]<br>";
}
Само че не мога да се сетя как да го направя, за да мога да изкарвам и от другата таблица (sport). Като цяло заявката ми ще бъде с още 2 LEFT JOIN и ще вадя от всяка таблица по нещо, но в почви всички има поле NAME.
 
Забрави ги тези звездички. Винаги указвай какво точно искаш от базата данни. Нали ти написах SELECT, просто го замести в твоята заявка.


$zaqvka1111 = mysql_query("SELECT s.id, e.other_field, e.name AS event_name, s.name AS sport_name FROM `event` AS e LEFT JOIN `sport` AS s ON s.`id`=e.`sportid` WHERE s.`id`= e.`sportid` ORDER BY e.`id` ASC");

while ($row = mysql_fetch_array($zaqvka1111))
{
echo "$row[event_name]<br>";
echo "$row[sport_name]<br>";
}

Надявам се разбираш какво става :) Можеш да даваш имена на такива полета (примерно name и в двете таблици).
 
Само тук не мога да разбера
Код:
SELECT s.id, e.id, e.name AS event_name

Защо при положение че имам s.id, e.id, e.name, ...event_name взема точно e.name.. Защото е последното от изброените ли ?
 
защото на него му казваш как да се казва.

SELECT [t1.some AS a1], [t2.some AS b2], [t3.some AS c3]

(квадратните скоби са за да се покаже как се групират нещата - не трябва да се пишат в заявката)

id-тата също трябва да ги направиш така.
 
Последен въпрос преди да затворя темата.

В момента направих заявката да работи и да взема от всичките таблици, но ми ги изкарва така.
Код:
Football | Eng. Premier League | Manchester City - Chelsea | 2014-09-21 16:00:00 1
Football | Eng. Premier League | Manchester City - Chelsea | 2014-09-21 16:00:00 2
Football | Eng. Premier League | Manchester City - Chelsea | 2014-09-21 16:00:00 Draw

А аз целя да ми го изкара така
Код:
Football | Eng. Premier League | Manchester City - Chelsea | 2014-09-21 16:00:00 1 Draw 2

Заявката ми представлява ..
Код:
$zaqvka1111 = mysql_query("SELECT s.id, m.awayteam,m.start_date,b.name,b.id,c.koef, e.name AS event_name, s.name AS sport_name, m.hometeam AS home_team, c.name AS zalog FROM `event` AS e 
LEFT JOIN `sport` AS s ON s.`id`=e.`sportid`
LEFT JOIN `match` AS m ON m.`event_id`=e.`id`
LEFT JOIN `bettype` AS b ON b.`match_id`=m.`id`
LEFT JOIN `choicetype` AS c ON c.`bet_id`=b.`id`
WHERE s.`id`= e.`sportid` AND b.name = 'Match Result' ORDER BY e.`id` ASC");

а вида залог( Match Result) и коефициента са ми записани в различни таблици.. да кажем в едната таблица имам

Код:
matchid                  Name
               1                      Match Result

а в другата имам

Код:
matchid      zalog          koef
   1                 1              2.00
   1                 2              1.00
   1              Draw           3.00

П.С. Знам защо ми ги изкарва 3 пъти.
 
т.е. искаш да изкараш заедно "1 Draw 2" ?

Ако можеш да дъмпнеш базата данни (само тия неща като от примера ти) за да пробвам ;)
 
т.е. искаш да изкараш заедно "1 Draw 2" ?

Да. Искам да изкарам от всяка таблица по нещо, но от таблицата Choice примерно, да изкарам 1 (коефициента) 2(коефициента) Draw(Коефициента), за да може да ми се получи


Пример:
Код:
 Лига                                             Мач                        1          Draw     2
Eng. Premier League | Manchester City - Chelsea |  2,00     3,00     1,00
А не както сега
Код:
 Лига                                             Мач                        
Eng. Premier League | Manchester City - Chelsea | 1   2,00
Eng. Premier League | Manchester City - Chelsea | draw 3,00
Eng. Premier League | Manchester City - Chelsea | 2   1,00

Дано си ме разбрал..
 
пробвах още преди това и ми извежда само първия резултат , в случая това е коефициента за 1-ца

Код:
Eng. Premier League | Hull - West Ham | 2014-09-15 20:00:00 1 (2.05)
така го извеждам коефициента ($row[koef])

П.С. Може би някъде в заявката трябва да задам 3 променливи да вземат 3-те стойности на коефициентите. Нещо от типа на.. choice1 да взема коеф за 1, но проблема е че вида залог е в една таблица а в другата е коефициента..

Както по-рано казах. В едната таблица имам
Код:
Matchid         name
     1         Match Result
а в другата имам
Код:
bet_id     name        koef
   1               1          2.00
   1               2          3.00
   1               draw    1.00

В случая трябва да имам c.koef1,c.koef2,c.koefdraw
като 1 да взема поле коеф WHERE b.name=match result AND c.betid=b.Matchid
Проблема е че трябва да имам и за коеф2 и коефdraw
 

Back
Горе