А ведь мне уже не нужны data_id пункты… Конечно в запросе можно указать не звездочку, а перечислить те поля что мне нужны. Но если выборка идет из таблицы где 20 полей, а надо всего 3 заменить и не показывать их — то перечисление всех 17ти оставшихся полей уже как то больше запроса будет размером…
В общем как оптимизирлвать запрос чтобы подставить в 3 разных ячейки таблицы данные из одной таблицы и как не показывать лишние поля без перечисления того что надо оставить...??
Вам нужно почитать про джойны в доке мускула и вот неплохая вроде статья из поиска anton-pribora.ru/articles/mysql/mysql-join/
Ну и, соотвествтенно, подджойнить таблицу несколько раз используя алиасы.
Проблему с полями решить можно очень просто указываете всё для основной таблицы и только нужные поля для подджойненных
SELECT table1.*, t2.data AS t2data, t3.data AS t3…
LEFT JOIN table2 AS t2 ON t2.id=table1.data1_id
LEFT JOIN table3 AS t3 ON t3.id=table1.data2_id
Не берите за ответ. Но легче явно указывать какие поля выбирать. Это экономит трафик, это понятнее, это не даст появиться непредсказуемым результатам — например новому значению в выборке, при добавлении нового столбца.
Вопрос очень трудный в описании. По началу я просто думал что вы объединяете одну и ту же таблицу по разным параметрам (аля постройка дерева через айдишники). Потом понял что просто вы не хотите иметь что то типа этого оператора SELECT *, EXCEPT pole FROM bla bla bla
На сколько я знаю, такого оператора в SQL нет. Надеюсь помог + я описал свое мнение почему звездочкой пользоваться нехорошо.