anonce
tickets
state
anonce и tickets - связь по полю aid
tickets и state связь по полю tid
необходимо из таблицы tickets получить все строки с указанным aid
потом дополнить из таблицы state по полю tid
SELECT anonce.aid, anonce.header, anonce.timestart, anonce.datestart, anonce.placestart,
tickets.tid,tickets.aid as taid, tickets.block, tickets.row, tickets.place, tickets.number,
state.state as state
FROM `tickets` LEFT JOIN `anonce` ON `tickets`.`aid` = `anonce`.`aid` AND `tickets`.`aid` = 1
LEFT JOIN `state`
ON `state`.`tid` = `tickets`.`tid`
почти сработал :D но оказывается AND `tickets`.`aid` = 1 - не шуршит)
Спустя 25 минут, 12 секунд (17.08.2012 - 12:38) kamanch написал(а):
в SELECT не нужно указывать имена таблиц. Ты же получаешь JOIN, значит итоговую одну таблицу.
Далее anonce.aid и tickets.aid - это же связанные поля, зачем 2 раза в результате?
Это на вскидку. Сейчас раскурю подробнее.
Далее anonce.aid и tickets.aid - это же связанные поля, зачем 2 раза в результате?
Это на вскидку. Сейчас раскурю подробнее.
Спустя 8 минут, 6 секунд (17.08.2012 - 12:46) kamanch написал(а):
Пробуй
SELECT aid, header, timestart, datestart, placestart,
tid, block, row, place, number,
state
FROM `tickets`
LEFT JOIN `anonce` ON (`tickets`.`aid` = `anonce`.`aid`)
LEFT JOIN `state` ON (`state`.`tid` = `tickets`.`tid`)
WHERE `tickets`.`aid` = 1
Спустя 2 минуты, 59 секунд (17.08.2012 - 12:49) Игорь_Vasinsky написал(а):
работает. спс.
тока
тока
Цитата |
aid, header, timestart, datestart, placestart, tid, block, row, place, number, state |
с именами таблиц
Спустя 3 минуты, 12 секунд (17.08.2012 - 12:52) Игорь_Vasinsky написал(а):
так. а как дополнить - чтоб если на выдаче 0, то
aid, header, timestart, datestart, placestart с таблицы anonce - все равно вернулись?
aid, header, timestart, datestart, placestart с таблицы anonce - все равно вернулись?
Спустя 21 минута, 33 секунды (17.08.2012 - 13:14) kamanch написал(а):
Цитата |
с именами таблиц |
Только для тех полей, которые более, чем в одной таблице есть. Для остальных и без имен работает. Хотя, при таком большом списке, удобнее с именами, так понятнее.
Цитата |
так. а как дополнить - чтоб если на выдаче |
Нужно другую прицеплялку, и порядок таблиц изменить, и условие WHERE:
SELECT `anonce`.`aid`, `header`, `timestart`, `datestart`, `placestart`, `tickets`.`tid`, `block`, `row` , `place`, `number`, `state`
FROM `anonce`
LEFT OUTER JOIN `tickets` ON ( `tickets`.`aid` = `anonce`.`aid` )
LEFT JOIN `state` ON ( `state`.`tid` = `tickets`.`tid` )
WHERE `anonce`.`aid` =3
Так у тебя из таблицы anonce будут выбраны значения в любом случае. А, если нет совпадений в других таблицах, то в результирующем ряде значения полей таблиц tickets и state будут заменены на NULL
Спустя 4 минуты, 24 секунды (17.08.2012 - 13:18) Игорь_Vasinsky написал(а):
понял. спс. как всё сложно и страшно)
Спустя 2 минуты, 30 секунд (17.08.2012 - 13:21) kamanch написал(а):


Спустя 3 минуты, 18 секунд (17.08.2012 - 13:24) Игорь_Vasinsky написал(а):
я тоже, просто ранее мало практики, щас повалилось всё сразу))
Спустя 7 часов, 9 минут, 8 секунд (17.08.2012 - 20:33) sergeiss написал(а):
По сути вопроса ответили, дайте "пофлудю" чуток.... 

Цитата (kamanch @ 17.08.2012 - 15:21) |
Я вообще запросы про себя на русском проговариваю, тогда понятнее |
Лучше на аглицком, потому что потом с аглицкого на SQL легче переводить

Спустя 1 час, 36 минут, 38 секунд (17.08.2012 - 22:10) Krevedko написал(а):
А я щас орм ковыряю. Вообще сказка.
Прописал связи, а потом сидишь и получаешь какой-нибудь
$article->name из одной и $article->category->name из другой.
Прописал связи, а потом сидишь и получаешь какой-нибудь
$article->name из одной и $article->category->name из другой.
Спустя 57 минут, 19 секунд (17.08.2012 - 23:07) Игорь_Vasinsky написал(а):
о не... меня всегда пугал оо варант.. я как консерватор практикую исключите процедурный стиль

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker