2009-12-27 3 views
2

В течение года мы разрешаем нашим пользователям входить в систему с именами пользователей и/или адресами электронной почты, которые не являются уникальными (хотя каждый пользователь имеет уникальный идентификатор). Хотя система обрабатывает дубликаты имен пользователей/электронных писем элегантно, мы решили, наконец, внедрить уникальные имена пользователей и адреса электронной почты. Мне было поручено создать таблицу в MySQL, которая будет отображать дубликаты и таблицы, в которых используется идентификатор дубликата (т. Е. Таблицы зависят от идентификатора пользователя дубликата, используя 1 для true и 0 для false). Затем эта таблица будет использоваться в качестве ссылки, как только дубликаты данных будут помечены для удаления. Короче говоря, я ищу, чтобы создать таблицу примерно так:MySQL Несколько вопросов о присоединении/подзапросах

| User_id | Имя пользователя | Эл. Почта | Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
--------------------------------------------- -------------------------------------------------- ------------
| 0001 ..... | test1 ......... | email. | 0 .......................... | 0 .......................... | 1 .......................... |
| 0002 ..... | test2 ......... | email. | 0 .......................... | 1 .......................... | 1 .......................... |
| 0003 ..... | test3 ......... | email. | 1 .......................... | 1 .......................... | 1 .......................... |


Не имеет большого значения, как это делается. Поскольку мои навыки SQL несколько не хватает, я намеревался сделать это программно, используя PHP и ряд простых SQL-запросов. Тем не менее, я считаю, что единственный запрос SQL или серия запросов (без использования PHP) - это самый чистый подход. Я знаю, как запрашивать дубликаты, но я не могу понять, как запросить несколько таблиц и соответствующим образом присоединить их к идентификатору пользователя. Я ценю любую помощь в этом. Спасибо.

ответ

2
SELECT u.User_id, u.Username, u.Email, 
IF(t1.User_id IS NULL, 0, 1) AS Exists_in_Table1, 
IF(t2.User_id IS NULL, 0, 1) AS Exists_in_Table2, 
IF(t3.User_id IS NULL, 0, 1) AS Exists_in_Table3 
FROM Users u 
LEFT OUTER JOIN Table1 t1 USING (User_id) 
LEFT OUTER JOIN Table2 t2 USING (User_id) 
LEFT OUTER JOIN Table3 t3 USING (User_id); 
+0

Благодарим вас за такой быстрый ответ! Я попробую это, как только я вернусь в офис. –

 Смежные вопросы

  • Нет связанных вопросов^_^