ПРИСОЕДИНЯЙТЕСЬ к Bills ON Bills.item_id = cars.id - PullRequest
3 голосов
/ 10 января 2012

Есть две таблицы:

СТОЛ счета

item_id | price
c1 | 10000
m1 | 9000
m2 | 8000

СТОЛ авто

id | model
1 | toyota
2 | bmw

Мне нужно присоединиться к обеим таблицам, где item_id = id И первая буква в item_id - «c», поэтому мне нужно получить: c1 | 10000 | 1 | Toyota

Ответы [ 2 ]

7 голосов
/ 10 января 2012
select * 
from cars c
join bills b on b.item_id = concat('c', c.id)

Обратите внимание, что производительность на порядок лучше (и приемлемее) объединения в этом порядке, потому что расчет для генерации составного ключа выполняется один раз для автомобиля , а не один раз за комбинацию машина / счет, если бы я сначала присоединился к счетам, а затем к машинам.

0 голосов
/ 10 января 2012

Сделай так:

select b.*, c.*
from bills b 
inner join cars c on convert(substring(b.item_id, 2, 8000), int) = c.id
where b.item_id like 'c%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...