Это «теоретический» вопрос.
У меня проблемы с определением вопроса, поэтому, пожалуйста, потерпите меня.
Если у вас есть несколько связанных таблиц в базе данных, например,таблица, в которой хранятся «пользователи», и таблица, в которой хранятся «телефоны»
и «телефоны», и «пользователи» имеют столбец с именем «user_id»
select user_id,name,phone from users left outer join phones on phones.user_id = users.user_id;
, который запрос предоставит мнестроки всех пользователей, независимо от того, есть у них телефон или нет.
Если у пользователя несколько телефонов, его имя будет возвращено в 2 ряда, как и ожидалось.
columns=>|user_id|name|phone|
row0 = > | 0 |fred|NULL|
row1 = > | 1 |paul|tlf1|
row2 = > | 1 |paul|tlf2|
имя "paul""в приведенном выше случае необходим дубликат, который, по мнению RDMS, вовсе не является дубликатом!Затем он будет обрабатываться некоторым языком сценариев на стороне сервера, например php.
Как эти «необходимые дубликаты» фактически обрабатываются в реальных веб-сайтах или приложениях?например, как строка «отображается» в некоторой пригодной для использования объектной модели.
ps, если вы решили опубликовать примеры, опубликуйте их для php, mysql, sqlite, если это возможно.
edit:
Спасибо за предоставленные ответы, каждый ответ интерпретировал вопрос по-своему, и, как таковой, он отличается и корректен по-своему.
Я пришел к выводу, что еслиПоездки туда и обратно обходятся дорого, это будет наилучшим способом наряду с решением Якоба Нильссона-Эле, которое подходит для теоретического вопроса.
Если поездки туда и обратно дешевы, я сделаю отдельные выборки для телефонов и пользователей, как 9000Предполагается, что если мне нужно будет показать один телефон для каждого пользователя, я дам телефонам основной столбец и присоединю его к пользователю, выбрав, как правильно предлагает Олли Джонс.
, хотя для реальных приложений яИспользуя ответ 9000, я думаю, что для этого нереального вопроса решение Якоба Нильссона-Эле является наиболее подходящим.