Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите составить запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Монстр_11111
Отправлено: 11 Июля, 2010 - 10:56:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 248
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Есть две таблицы (для примера)
1. (200 записей)
Ид / Имя
2. (200 записей)
Ид / Имя

Нужно вывести все данные 2ой таблицы, где имена не совпадают с именами первой таблицы
 
 Top
movEAX
Отправлено: 11 Июля, 2010 - 11:50:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Монстр_11111 пишет:
Есть две таблицы (для примера)
1. (200 записей)
Ид / Имя
2. (200 записей)
Ид / Имя

Нужно вывести все данные 2ой таблицы, где имена не совпадают с именами первой таблицы

// 100% рабочий вариант, в отличии от предыдущего
SELECT * FROM table2 WHERE name not in (SELECT name FROM table1);

(Отредактировано автором: 11 Июля, 2010 - 22:35:26)



-----
армия.. самое убогое место
 
 Top
Реф
Отправлено: 11 Июля, 2010 - 12:00:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




Монстр_11111
SELECT table2.* FROM table1, table2 WHERE table1.name != table2.name


-----
Думать надо головой, а не головкой!
 
 Top
Champion Супермодератор
Отправлено: 11 Июля, 2010 - 16:59:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




select * from t1 where not exists(select * from t2 where t2.name = t1.name)

select * from t1 left join t2 on t1.name = t2.name where t2.name is null
(Добавление)
Реф, подумай гад тем, что написал - сам поймешь, что этот запрос вернет очень-очень много данных, причем не тех)
 
 Top
JustUserR
Отправлено: 13 Июля, 2010 - 01:52:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Реф Данный запрос должен вывести декартово произведение данных двух таблиц за исключением строк в которых значения из первой и второй таблицы совпадают - так как в SELECT-списке используется только поле из первой таблицы то оно будет выведено столько раз сколько во второй таблице есть непересекающихся полей - а соответственно при добавлении DISTINCT будут просто выведены все записи из первой таблицы для которых во второй нашлось несоответствующее значение


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB