исключение повторных значений из таблицы MySQL - PullRequest
0 голосов
/ 03 октября 2018

Мне нужна помощь в создании рабочего объединенного запроса между многими таблицами для проекта. Проблема в том, что я получаю повторяющиеся значения при выполнении запроса. Если вам нужен sql dump, я готов это сделать

и вот она: Таблица 1 :-( user) Таблица user.user_id является первичной и встречается много раз один раз в разных таблицах, а user.uname является своего рода первичной и встречается много раз в разных таблицах (это неопределенный первичный ключ, такой как user_id) 1) updates.user_id_u является вторичным по отношению к user.user_id и может встречаться много раз 2) updates.account_name и updates.author вторично по отношению к user.uname и может происходить много раз 3) group_posts.author_id вторично по отношению кuser.user_id и может встречаться много раз 4) group_posts.author_gp является вторичным по отношению к user.uname и может происходить много раз в зависимости от разных пользователей.5) user.user_id является первичным по отношению к voted_u.user_id_v (таблица, которая содержит столбцы «Нравится» и «Не нравится» для обновлений) и может встречаться много раз. 6) voted_g_c.user_id_reply_g вторично по отношению к user.user_id и может происходить много раз, так как пользователь может нажать на другойссылки на странице.7) voted_c.user_id_reply является вторичным по отношению к user.user_id и может происходить много раз, так как пользователь может щелкнуть по многим ссылкам на странице для обновления комментариев таблицы.

Таблица 2 :-( group_posts) group_posts.gp_id является первичным, тогда как group_posts.pid также является своего рода первичным для комментариев групповых сообщений (это означает комментарий к gp_id и может встречаться много раз) 1) group_posts.gname isвторичный по отношению к groups.name и может встречаться много раз, так как это имя группы.2) voted_g_u.vote_4_gid (таблица для group_posts, которые пользователям нравятся или не нравятся нажатия кнопок) является вторичной по отношению к group_posts.g_id и может происходить много раз, поскольку пользователи могут нажимать одну и ту же кнопку «нравится» или «не нравится» 3) group_posts.group_id является вторичной по отношению к groups.g_id иможет происходить много раз, сколько пользователей могут публиковать сообщения в одной группе.4) group_posts.author_id является вторичным по отношению к user.user_id и может встречаться много раз.

Таблица 3 :-( groups) groups.g_id является первичной и встречается только один раз, как и groups.name.1) groups.creator является вторичным по отношению к user.uname и может происходить много раз, так как пользователь может создать несколько групп.

Таблица 4 :-( comment_update) comment_update.comment_id является первичной и встречается только один раз.1) comment_update.os_id (исходный идентификатор статуса) является вторичным по отношению к update.update_id и может происходить много раз, так как пользователи могут писать комментарии к одному и тому же обновлению.2) comment_update.author_c связан с u.uname и может встречаться много раз 3) comment_update.user_id_c связан с user.user_id и может встречаться много раз

Таблица 4: - (члены или члены группы, что я хочучтобы сделать, я хочу получить пользователей той же группы и получить их group_updates) 1) gmembers.gname на самом деле имя группы и является вторичным по отношению к groups.name и может происходить много раз 2) gmembers.mname является именем пользователя илиотносится к user.uname и может встречаться много раз 3) gmembers.group_id является вторичным по отношению к groups.g_id и может происходить много раз 4) gmembers.user_id_group является вторичным по отношению к user.user_id и может происходить много раз, так как может быть членоммного групп

Таблица 5 :-( voted_u и voted_c) 1) voted_u.vote_4_update_id является вторичной по отношению к updates.update_id и может происходить много раз 2) voted_u.user_id_v вторичной по отношению к user.user_id и может происходить много раз длятот же voted_u.vote_4_update_id 3) voted_c.vote_4_reply_id является вторичным по отношению к comment_update.comment_id и can происходит много раз 4) voted_c.user_id_reply является вторичным по отношению к user.user_id и может встречаться много раз. Таблица 6 :-( voted_g_u & voted_g_c) первичный ключ для voted_g_u & voted_g_c, как voted_u и voted_c, не имеет вторичных значений 1) voted_g_u.Vote_4_gid является вторичным по отношению к group_posts.gp_id и может происходить много раз.

Запрос: -

SELECT DISTINCT up.*
              , g.* 
              , cu.*
              , gm.*
              , gp.*
              , v_g.*
              , v_g_c.*
              , v_u.*
              , v_c.* 
              , u.uname
              , u.avatar
              , u.user_id 
           FROM group_posts as g 
           JOIN user u 
             ON u.user_id = g.author_id 
           LEFT 
           JOIN updates up 
             ON up.user_id_u = u.user_id 
           LEFT 
           JOIN groups gp 
             ON g.group_id = gp.g_id 
           LEFT 
           JOIN gmembers gm 
             ON gm.user_id_group = g.author_id 
           LEFT 
           JOIN comment_update cu 
             ON cu.os_id = up.update_id 
           LEFT 
           JOIN voted_g_u v_g 
             ON v_g.vote_4_gid = g.gp_id 
           LEFT 
           JOIN voted_g_c v_g_c 
             ON v_g_c.vote_4_reply_id = g.pid 
           LEFT 
           JOIN voted_u v_u   
             ON v_u.vote_4_update_id = up.update_id 
           LEFT 
           JOIN voted_c v_c 
             ON v_c.vote_4_reply_id = cu.comment_id 
          WHERE g.group_id = 25 
            AND u.user_id = 127 
          GROUP 
             BY up.update_id
              , g.gp_id 
          ORDER 
             BY u.user_id desc

Если вы хотите знать, что отношения один ко многим лучше всего, я дам вам дамп sql и я открыт для вопросов.

редактировать:-Я понимаю, что я зеленый и мне нужно много учиться, но я ищу быстрое решение, чтобы завершить проект, так как изучение того, как сделать запрос, займет некоторое время.вот дамп sql: http://rextester.com/KRWG51655

...