Я создаю блог, используя PHP и SQL, я пытаюсь сделать запрос всего за 1 SQL-запрос, чтобы я мог вынести все комментарии с авторами и все блоги с авторами. Каждый из них имеет user.uuid
в качестве внешнего ключа.
Моя таблица блогов выглядит так:
CREATE TABLE `blogs` (
`uuid` int(255) NOT NULL,
`title` varchar(1024) NOT NULL,
`detail` varchar(1024) NOT NULL,
`user_id` int(255) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Моя таблица комментариев блога выглядит следующим образом:
CREATE TABLE `blogs_comments` (
`uuid` int(255) NOT NULL,
`blog_uuid` int(255) NOT NULL,
`user_uuid` int(255) NOT NULL,
`comment` varchar(250) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Моя таблица пользователей выглядит следующим образом:
CREATE TABLE `users` (
`uuid` int(255) NOT NULL,
`username` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`foreName` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`surName` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`email` text COLLATE utf8_unicode_ci NOT NULL,
`number` int(11) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`is_admin` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Вот мой текущий SQL:
SELECT
b.uuid AS 'Blog ID', b.title AS 'Blog Title', b.detail AS 'Blog Body', u.uuid AS 'Blog Author ID', u.username AS 'Blog Author Username',
(SELECT bc.comment WHERE u.uuid = bc.user_uuid) AS 'Comment',
(SELECT u.uuid WHERE u.uuid = bc.user_uuid) AS 'Comment Author ID',
(SELECT u.username WHERE u.uuid = bc.user_uuid) AS 'Comment Author Username'
FROM blogs b
INNER JOIN blogs_comments bc ON b.uuid = bc.blog_uuid
INNER JOIN users u ON b.user_id = u.uuid
Запрос работает нормально, однако он имеет неожиданный вывод и выглядит так:
![](https://i.stack.imgur.com/VNJYU.png)
Я бы хотел, чтобы в выводе были все комментарии для автора комментария в 1 строке, тогда каждая строка будет специфичной для автора комментария. IE:
Comment Author Comment Comment
Jaquarh TEST Lorem Ipsum
Любые идеи будут чрезвычайно полезны, спасибо!