Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два запроса в одном 
:(
    Опции темы
letsgo
Дата 21.11.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



Есть две таблицы: table1, table2_notview.
Таблица table1 имеет два столбца: `iduser`, `name`
Таблица table2 имеет два столбца: `idview`, `iduser`

Необходимо вывести данные из таблицы table1, при этом проверив, есть ли значение iduser в таблице table2_notview.
Если это значение есть во второй таблице, то выводить не нужно.

Как делаем сейчас?

Делаем запрос из таблицы table1
Код

$res = mysql_query("SELECT * FROM `table1`");
while ($row = mysql_fetch_array($res)):
$iduser = $row['iduser'];
$res2 = mysql_query("SELECT * FROM `table2_notview` WHERE `iduser` = '$iduser '");
if (mysql_num_rows($res2) == 0) {
echo $row['name'];
}
endwhile;


Как объединить эти два запроса в один?
Заранее спасибо


PM MAIL   Вверх
skyboy
Дата 21.11.2010, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



какая СУБД, партизан?
для MySQL можно так:
Код

select table1.*
from table1
where table1.iduser = :iduser and exists (select * from table2_notview where table2_notview.iduser = table1.iduser)

или 
Код

select distinct table1.*
from table1
inner join table2_notview
on table2_notview.iduser = table1.iduser
group by table1.iduser

[updated]
это неправильные запросы. они делают обратное требуемому - выбираются записи из первой таблицы, которые имеют соответствия во второй таблице!

Это сообщение отредактировал(а) skyboy - 22.11.2010, 11:33
PM MAIL   Вверх
ksnk
Дата 22.11.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



Цитата(letsgo @  21.11.2010,  17:19 Найти цитируемый пост)
Необходимо вывести данные из таблицы table1, при этом проверив, есть ли значение iduser в таблице table2_notview.
Если это значение есть во второй таблице, то выводить не нужно.

Код

select t1.*
from table1 as t1
left join table2_notview as t2
on t2.iduser = t1.iduser
where t2.iduser IS NULL

так получатся записи, которые есть в первой таблице и отсутствуют во второй.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 22.11.2010, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(ksnk @  22.11.2010,  08:35 Найти цитируемый пост)
оторые есть в первой таблице и отсутствуют во второй.

ааааа. я перепутал. написал для "ровно наоборот".
тогда так:
Код

select table1.*
from table1
where table1.iduser = :iduser and not exists (select * from table2_notview where table2_notview.iduser = table1.iduser)

PM MAIL   Вверх
ksnk
Дата 22.11.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



Цитата(skyboy @  22.11.2010,  11:32 Найти цитируемый пост)
table1.iduser = :iduser

А что означает эта запись? просто подстановку вместо :iduser некоего пришедшего свыше значения или еще что?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 22.11.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(ksnk @  22.11.2010,  11:24 Найти цитируемый пост)
просто подстановку вместо :iduser некоего пришедшего свыше значения или еще что? 

ага. параметр в запросе.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.