запрос к бд получается уже некорректнымчто в нем некорректного? Вы запросили данные, их в бд нет, вернулся пустой ответ. Так и должно быть.
insert ... on duplicate key update ...
SELECT articles.id, -- можно указывать не только имя столбца, но и таблицу
foo.id, authors.name, bar.id, -- можно давать таблицам псевдонимы (alias)
bar.id as QWERTY, -- еще можно так
bar.id ZZZ -- и даже так
FROM articles foo -- foo псевдоним для таблицы articles
INNER JOIN articles_authors bar -- bar - псевдоним для articles_authors
ON articles.id = articles_authors.id
WHERE IF(articles.id != '', articles.id, articles_authors.id)
select u.name, u.phone, sum(o.summa) total, avg(o.summa) average, max(o.created) last_date
from orders o, `users` u
where u.id=o.user_id
group by u.id
having total > 0
select `authors`.`name`, `books`.`title`
from `books`
left join `authors` ON `authors`.`id` = `books`.`author_id`
select `authors`.`name`, count(`books`.`id`) as cnt
from `books`, `authors`
group by `books`.`author_id`
having count(`books`.`id`) = 0
select `authors`.`name`, count(`books`.`id`) as cnt
from `books`, `authors`
group by `books`.`author_id`
having count(`books`.`id`) > 1
но даже после добавления ключей и запросов по этим ключам всё равно получается, что затрагивается огромное кол-во строк