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
Сообщений: 1360
Регистрация: 29.10.2009
Из: г.Москва
Поблагодарили: 339 раз
Репутация:   90  


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
Сообщений: 3087
Регистрация: 18.11.2009
Поблагодарили: 2643 раза
Репутация:   257  


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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Помогите, пожалуйста, моей дочери выжить!
благотворительный топик
30 vitvirtual 3761 19.5.2018, 8:30
автор: vitvirtual
Открытая тема (нет новых ответов) Продвигаю страницу по запросу "Как сделать игру". Помогите советом, пожалуйста
Я секу в теме! Но подать статью угодным поисковикам образом не смо
22 coremission 2158 8.5.2018, 12:33
автор: coremission
Открытая тема (нет новых ответов) Помогите с выбором ноута
20 rokot 885 23.4.2018, 12:09
автор: Room
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыПомогите с идеями для форума про успех
Спасибо за каждую идею
43 Zoya83 5110 12.4.2018, 11:42
автор: Zoya83
Открытая тема (нет новых ответов) Лендинг или сайт-визитка для ИП? Помогите определиться
6 Yas18 1129 31.3.2018, 20:57
автор: Yas18


 



RSS Текстовая версия Сейчас: 23.5.2018, 6:07
Дизайн