#php #mysql
#php #mysql
Вопрос:
я хочу выбрать все, где завершается моя учетная запись
но я получаю эту ошибку
DBD ::mysql:: st выполнить не удалось: Операнд должен содержать 1 столбец (ы)
USER
ID ACCOUNT
1 JOHN
2 JANE
3 JET
4 KAT
5 YMT
FRIENDS
ID ACCOUNT FRIEND
1 JOHN JET
2 JET JANA
3 KAT JOHN
NOTIC
ID ACCOUNT
1 JOHN
SELECT count(*) FROM notic WHERE account IN (SELECT account, friend FROM friends WHERE account = 'JOHN' OR friend = 'JOHN'
Комментарии:
1. Измените
SELECT account, friend
на простоSELECT account
.2. Или, может быть, это должно быть ОБЪЕДИНЕНИЕ, один запрос возвращает
account
, другой возвращаетfriend
.3. @Barmar я пробовал это и возвращает только с 1 номера, но я хочу проверить все номера в ДРУЗЬЯХ
4. я не пробовал это с union, пожалуйста, поделитесь со мной тем, как я могу сделать это в union
Ответ №1:
Вы можете присоединиться к friends
таблице на notic.account = friend.account
или notic.account = friend.friend
Что-то вроде этого
select count(*) from notic n join friends f on n.account = f.account || n.account = f.friend where n.account = 'JOHN';
Вот скрипка, показывающая, что она работает
Комментарии:
1. Это умножит количество на количество записей, сопоставленных в
friends
. ПопробуйтеCOUNT(DISTINCT n.id)
2. Также необходимо
WHERE n.account = 'JOHN'