Двойной запрос mysql
С наступающими праздниками!
Как обледененить 2 запроса mysql в один? "SELECT `photo_id` FROM `like` where `user_id`= $user_id", SELECT * FROM `photo` where `user_id`= $user_id В одной таблице хранится значение photo_id, затем из второй таблицы достаю строку, где photo_id = photo_id. |
Цитата:
Таблица `basic` - основная (твоя `photo`) Таблица `user_basic` - пользовательские действия связанные с basic (у тебя вроде бы `like`) $user_id = (int)$user_id; 1. Самый быстрый. "SELECT `basic`.`id` FROM `basic`,`user_basic` WHERE `basic`.`id`=`user_basic`.`basic_id` AND `user_basic`.`id`=$user_id" 2. Через подзапрос, более внятно написанное, что и выше, но с подзапросом. "SELECT `id` FROM `basic` WHERE `id` = (SELECT `basic_id` FROM `user_basic` WHERE `id`=$user_id)" 3. Через склейку(объединение таблиц). Пожалуй самый долгий, но иногда нужен именно этот. "SELECT `basic`.`id` FROM `basic` LEFT OUTER JOIN `user_basic` ON `basic`.`id`=`user_basic`.`basic_id` WHERE `user_basic`.`id`=$user_id" JOIN-ами можно ещё пару запросов реализовать, но думаю тебе и этого должно хватить. ps: Не называй таблицы `like` эдак и рёхнуться можно. |
У меня получилось так :
if ($result = $mysqli->query("SELECT `id` FROM `photo` WHERE `id` = (SELECT `photo_id` FROM `like` WHERE `user_id`=$user_id)", MYSQLI_USE_RESULT)) { Но mysql возвращает ошибку №1242. #1242 - Subquery returns more than 1 row Как правильно выбрать? Т.к. дальше $row пустой while ($row = $result->fetch_object()) |
Цитата:
Выборка совпадает с несколькими строками. У тебя подзапрос возвращает список идешников. Поэтому ты либо неправильно формулируешь вопрос, либо у тебя кривая реализация. Используй первый вариант, должно помочь. $result->fetch() $result->execute();не забыл? Частая ошибка. |
И давай поподробней строение таблиц и что находиться в одной таблице, а что в другой и что нужно получить. Не надо писать запросами. Напиши словами.
|
В таблице like находится photo_id и user_id,
в таблице photo находится вся информация касательно фотографии, т.е. url, id, title, date и т.д. Необходимо отобразить все данные фотографии ( из таблицы photo ), у которых автор $user_id ( в таблице `like` ) |
Mateus,
И чем тебе первый запрос не подошел? "SELECT `photo`.`id` FROM `photo` , `like` WHERE `photo`.`id` = `like`.`photo_id` AND `like`.`user_id` = $user_id" |
Немного поразмыслив и переделав запрос, получи необходимую информацию.
Огромное спасибо Вам, Gozar, и с Рождеством! |
прошу подробнее
та же история - прошу ответить чисто теоретически
Субд MySql в базе base следующие таблицы tab1 в ней поле а tab2 в ней поле в Вопрос-как правильно записать (язык рнр) вставку (может обновление) в общем перенести (записать) в поле (в tab2) значения поля (а tab1) для определенных рядом условий строк) какой код нужен чтобы при внесении данных в поле (а tab1), автоматически изменялось и значение данных в поле (в tab2) Варианты ??? Спасибо заранее за консультацию. |
прошу подробнее
Уточню вопрос Версия PHP: 5.6.11-1ubuntu3.1Версия Mysql: 5.6.28-0ubuntu0.15.10.1 Необходимо на языке РНР в правильном синтаксисе составить запрос (или их комбинацию),чтобы в одной и той же базе-base в поле a tabl1,отвечающего условиями S11,S12 записать значение из поля b tabl2,отвечающего условиям S21,S22 код нужен только для запросов. И есть ли разница этой задачи от подобной, но подразумевающей автоматическое заполнение значений поля a tabl1,отвечающего условиями S11,S12 при вводе через форму значений в поле b tabl2,отвечающего условиям S21,S22 |
Часовой пояс GMT +3, время: 09:57. |