то есть есть 2 пользователя с одним именем.
Как надо составить запрос что вывел и фамилию и имя?
У меня сейчас получается два запроса:
1. выводит фамилию
2. выводит имя
SELECT CONCAT(f.`name`, ' ', n.`name`) as 'full_name' FROM `users` u
INNER JOIN `names` n ON (u.names_id = n.id)
INNER JOIN `femelis` f ON (u.femelis_id = f.id)
WHERE u.id = 1
Я бы не рекомендовал бы подобный дизайн, т.к. cardinality для указанных полей невысока и объединение данных в данном случае будет намного дороже. Вещи вроде выбора уникальных имен и фамилий решаются простейшим GROUP BY.
Данный пример показывает, что денормализация данных принесет в проект существенное упрощение и является допустимым инженерным решением.
@calliko просто нет смысла делать 3 таблицы вместо одной. Нужно просто хранить в users поля firstname (имя) и lastname (фамилия).
Как только твой сайт станет чуточку сложнее, то там users могут встречаться по нескольку раз и джоинить станет сложнее. Эти джоины скажутся на производительности.
@zoonman, забыл сказать, что пример я выбрал для упрощения.
У меня есть таблица техники с со столбцами марка, модель, юзер и т.д.
Я вывожу марку,модель и юзера одним запросом, а раньше приходилось выполнять 3.
То есть что то вроде этого.
массив id техники{
1.запрос моделей
2.запрос марки
3.запрос пользователей
echo'1.2.3.';
}
а теперь так:
массив id техники{
1.запрос - моделей. марки.пользователей
@zoonman Решил наконец-то с mysqli перейти на PDO за одно и объединять запросы. Вот и натыкаюсь на различные трудности и ошибки типа Fatal error: Call to a member function Fetch() on a non-object