Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.12.2012, 01:08
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

Двойной запрос 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.
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2012, 10:40
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Mateus
Как обледененить 2 запроса mysql в один?
Как минимум тремя способами:

Таблица `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` эдак и рёхнуться можно.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 22.12.2012 в 10:53.
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2012, 18:15
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

У меня получилось так :
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())
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2012, 18:49
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Mateus
Subquery returns more than 1 row
Подзапрос вернул более 1 строки.

Выборка совпадает с несколькими строками. У тебя подзапрос возвращает список идешников. Поэтому ты либо неправильно формулируешь вопрос, либо у тебя кривая реализация.

Используй первый вариант, должно помочь.

$result->fetch()

$result->execute();
не забыл? Частая ошибка.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2012, 18:55
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

И давай поподробней строение таблиц и что находиться в одной таблице, а что в другой и что нужно получить. Не надо писать запросами. Напиши словами.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #6 (permalink)  
Старый 22.12.2012, 21:03
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

В таблице like находится photo_id и user_id,
в таблице photo находится вся информация касательно фотографии, т.е. url, id, title, date и т.д.

Необходимо отобразить все данные фотографии ( из таблицы photo ), у которых автор $user_id ( в таблице `like` )
Ответить с цитированием
  #7 (permalink)  
Старый 22.12.2012, 21:25
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Mateus,
И чем тебе первый запрос не подошел?
"SELECT `photo`.`id` FROM `photo` , `like` WHERE `photo`.`id` = `like`.`photo_id` AND `like`.`user_id` = $user_id"
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #8 (permalink)  
Старый 24.12.2012, 13:21
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

Немного поразмыслив и переделав запрос, получи необходимую информацию.
Огромное спасибо Вам, Gozar, и с Рождеством!
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2016, 16:58
Новичок на форуме
Отправить личное сообщение для n2011all Посмотреть профиль Найти все сообщения от n2011all
 
Регистрация: 08.03.2016
Сообщений: 4

прошу подробнее
та же история - прошу ответить чисто теоретически
Субд MySql в базе base следующие таблицы
tab1 в ней поле а
tab2 в ней поле в
Вопрос-как правильно записать (язык рнр)
вставку (может обновление) в общем перенести (записать)
в поле (в tab2) значения поля (а tab1) для определенных рядом условий строк)
какой код нужен чтобы при внесении данных в поле (а tab1), автоматически изменялось и значение данных в поле (в tab2)
Варианты ???
Спасибо заранее за консультацию.
Ответить с цитированием
  #10 (permalink)  
Старый 08.03.2016, 17:58
Новичок на форуме
Отправить личное сообщение для n2011all Посмотреть профиль Найти все сообщения от n2011all
 
Регистрация: 08.03.2016
Сообщений: 4

прошу подробнее
Уточню вопрос
Версия 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
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать mysql запрос в javascript? Timur85 AJAX и COMET 69 13.08.2020 06:48
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Запрос на сервер Serjuk AJAX и COMET 6 04.06.2012 03:09
Правильный запрос Mysql posta Серверные языки и технологии 1 22.11.2011 00:27
Запрос - ответ(VK,json) Slawaq Серверные языки и технологии 4 25.09.2010 00:28