X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с mysql-запросом
GC_
GC_
Topic Starter сообщение 26.1.2014, 1:40; Ответить: GC_
Сообщение #1


Завсегдатай
*****

Группа: Active User
Сообщений: 902
Регистрация: 14.1.2008
Из: Red-Ярск
Поблагодарили: 364 раза
Репутация:   78  


Доброй ночи!


Помогите грамотно решить задачу.

Имеется база данных, в ней 2 таблицы:

1. каталог картинок (ид, картинка)
2. что-то типа сессий пользователя, в которую записывается информация по просмотренным картинкам (ид, логин, ид картинки, параметр)
параметр содержит информацию, например "смотрел", "не смотрел".


Как правильно сделать выборки из БД:

а) чтобы выдался список всех картинок, ид которых не упоминается во второй таблице.
б) чтобы выдался список всех картинок, ид которых упоминается во второй таблице и при этом содержит какой-либо параметр.

Знаний не хватает, на ум приходит только такого рода решение:


q =query SELECT FROM _table1

while (r = fetch (q)){

q2 =query SELECT FROM _table2 WHERE ид картинки='r[ид]'
r2 = fetch (q2)

}


но при таком варианте делается много запросов к бд и если нужно вывести скажем 50 картинок, то это 51 запрос будет :-)

Вот подскажите, как сделать правильно?


--------------------
В чем сила, Брат?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Tollun
Tollun
сообщение 26.1.2014, 2:45; Ответить: Tollun
Сообщение #2


Старожил
******

Группа: Active User
Сообщений: 1595
Регистрация: 1.10.2009
Из: Хабаровск
Поблагодарили: 394 раза
Репутация:   66  


Если опустить вопрос объёма в таблицах, 50 мелочь, можно 2 - результат первого в массив и сравнивать при втором.
Но объём таблиц и частота подобных выборок имеет значение

Сообщение отредактировал Tollun - 26.1.2014, 2:53


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
GC_
GC_
Topic Starter сообщение 26.1.2014, 10:15; Ответить: GC_
Сообщение #3


Завсегдатай
*****

Группа: Active User
Сообщений: 902
Регистрация: 14.1.2008
Из: Red-Ярск
Поблагодарили: 364 раза
Репутация:   78  


Первая таблица небольшая, вторая скорее всего очень большая будет.

Можно пример реализации про массив?


--------------------
В чем сила, Брат?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Tollun
Tollun
сообщение 26.1.2014, 11:01; Ответить: Tollun
Сообщение #4


Старожил
******

Группа: Active User
Сообщений: 1595
Регистрация: 1.10.2009
Из: Хабаровск
Поблагодарили: 394 раза
Репутация:   66  


/* первая выборка */
while(query){
$arr[] = $param...
}

q =query SELECT FROM _table1

while (r = fetch (q)){

$a = array_search(r[ид], $arr);

if($a){
/* упоминание  есть */
}

}


можно так же in_array или array_key_exists

Сообщение отредактировал Tollun - 26.1.2014, 10:55


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
GC_
GC_
Topic Starter сообщение 26.1.2014, 11:07; Ответить: GC_
Сообщение #5


Завсегдатай
*****

Группа: Active User
Сообщений: 902
Регистрация: 14.1.2008
Из: Red-Ярск
Поблагодарили: 364 раза
Репутация:   78  


Нашел вот такое решение:

SELECT FROM tbl1, tbl2 WHERE tbl1.id=tbl2.id


--------------------
В чем сила, Брат?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Solonik
Solonik
сообщение 26.1.2014, 11:30; Ответить: Solonik
Сообщение #6


Старожил
******

Группа: Active User
Сообщений: 1358
Регистрация: 29.10.2009
Из: г.Москва
Поблагодарили: 338 раз
Репутация:   89  


GC_, Да можно напрямую из базы средствами mysql вытянуть уже. К примеру можно попробовать через вложенные запросы.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
GC_
GC_
Topic Starter сообщение 26.1.2014, 11:43; Ответить: GC_
Сообщение #7


Завсегдатай
*****

Группа: Active User
Сообщений: 902
Регистрация: 14.1.2008
Из: Red-Ярск
Поблагодарили: 364 раза
Репутация:   78  


Разобрался, нашел нужные примеры в гугле :-) тему можно закрыть


--------------------
В чем сила, Брат?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
WebAction
сообщение 26.1.2014, 11:46; Ответить: WebAction
Сообщение #8


Топовый постер
*******

Группа: Super Moderator
Сообщений: 3059
Регистрация: 18.11.2009
Поблагодарили: 2511 раз
Репутация:   249  


Вы нашли верное решение. Closed!


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Недорогие услуги - php/js/mysql/jquery/bootstrap
2 vlads 645 Вчера, 21:01
автор: vlads
Открытая тема (нет новых ответов) Помогите выбрать программу
Помогите выбрать программу
11 impak 1334 11.12.2017, 13:11
автор: Mikki
Открытая тема (нет новых ответов) Помогите найти плагин на WP
Отзывы с профилей соц сетей
1 SEOMR 438 30.11.2017, 7:18
автор: Nell
Открытая тема (нет новых ответов) Помогите найти проблему
Долгий ответ сервера
6 maxim1249 688 29.11.2017, 17:27
автор: genjnat
Открытая тема (нет новых ответов) Помогите оценить новотник. Плиз
1 Alex-777 520 29.11.2017, 7:18
автор: grumdas


 



RSS Текстовая версия Сейчас: 14.12.2017, 10:33
Дизайн