Моя установка выглядит следующим образом:PHP CodeIgniter сборки результатов запроса
Table 'data': 'title','body',...,'user_id',...
Table 'users': 'user_id','some_val'...
В основном я хочу, чтобы каким-то образом соединить таблицы «данные» и «пользователей» на user_id поле, так что я могу вытащить «some_val» из «таблица пользователей». Моя проблема заключается в том, что не каждый user_id в таблице «data» имеет соответствующую запись в таблице «users».
С помощью codeigniter/php я в конечном итоге хочу собрать массив результатов, содержащий все «some_vals» из таблицы «users», соединяющей data.user_id = users.user_id
. НО, когда в таблице данных есть user_id, но НЕ в таблице users, я хочу вставить какое-то значение по умолчанию в мой массив результатов (и, надеюсь, этот массив может быть в том же порядке, что и user_id в таблице данных).
Надеюсь, это было не слишком непонятно. Есть идеи?
спасибо за ответ быстро, глядя на этот запрос - не будет мне нужно сделать 'из данных й, пользователи U ..? – oym
Нет. 'из данных d, пользователи u' являются сокращением для выражения' от данных d внутренних пользователей соединения u на ... '. В этом случае мы используем 'left join', а не' inner join'. «Внутреннее соединение» позволит вам * только * строки данных с действительным 'user_id'. «Левое соединение» будет получать ваши * все * строки и возвращать 'null' для столбцов' users', которые не соответствуют 'user_id' данных' data'. – Eric
oh nevermind, я прочитал его более тщательно, и то, что я сказал, не имеет смысла ... спасибо за помощь! не знал о функции coalesce. – oym