Справочная информация:
Сначала меня попросили создать веб-сайт с использованием mysql в качестве базы данных, после того, как это было сделано и отправлено, клиенты попросили меня преобразовать его в mssql и 3 уровня.
Я сделал классы и функции для передачи данных между серверами, так что 3-х уровневый бит почти на полпути. я сейчас борюсь с MsSQL.
Вопрос:
версия вопроса MySQL выглядит так:
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
order by b.id desc
он возвращает отзывы, которые еще не утверждены, сгруппированы для каждого пользователя;
Где я застрял:
Я не могу преобразовать это в MSSQL
Моя лучшая попытка:
как в:
create view test as
(
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a inner join tbl_testimonia b on a.id = b.user_id
where b.status_admin=0 and a.id in
(
select a.id from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
)
)
это выбирает то, что я хочу, но поле id представления создания не может быть сгруппировано , что означает, что поле id не уникально и может иметь то же значение.
Полагаю, до этого момента у меня возник вопрос: как мне однозначно выбрать поле id в представлении?
Конечно, я могу сделать это на PHP, но я мог бы сделать это месяц назад, когда впервые столкнулся с проблемой.
Я уже некоторое время пытаюсь найти ответ, но, похоже, не могу найти ответ, уникальный для моего вопроса
- edit: MSSQL не работает, потому что, хотя подзапрос выбирает уникальные идентификаторы, оператор in в основном запросе делает это бесполезным
edit: пример вывода :: ~ (в MySql 3-е поле опущено)
| a_id | firstN | LastN | agent_code | b_id | user_id |status_admin|
+--------------------------------------------------------------------------+
| 32 | fn1 | ln1 | AC123213 | 14 | 32 | 0 |
| 41 | fn2 | ln2 | 12345678 | 15 | 41 | 0 |
| 32 | fn1 | ln1 | AC123213 | 16 | 32 | 0 |
edit: ВОПРОС РЕШЕН большое спасибо Ливену за простой ответ