Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выборка из двух таблиц
 
 автор: Expier   (14.12.2006 в 16:45)   письмо автору
 
 

Здравствуйте!
Делаю такой запрос:


SELECT personal.id_seaman , sea_service.num FROM personal, sea_service WHERE 
sea_service.del='0' AND personal.del='0' AND personal.id_rank = '1' 
AND sea_service.dwt >= '1' GROUP BY personal.id_seaman;


Немного объясню: существует 2 таблицы, часть данных берется из одной, остальные - из другой.
Поле id_seaman - существует как в таблице personal так и в sea_service.

результат выглядит примерно так

id_seama | num
18 | 1
23 | 1
34 | 1
56 | 1
78 | 1
......
и т.д

Проблема в том, что выдает строки, некоторые из которых не соответствуют запросу.
Т.е., например, строка, в которой id_seaman = 23 а num = 1, не существует: в таблице sea_service вообще нет строки с id_seaman = 23;
Поле num - это вообще ключ. Т.е. о дублировании его речи быть не может.

Подскажите, пожалуйста, в чем может быть дело.

   
 
 автор: servannin   (14.12.2006 в 18:31)   письмо автору
 
   для: Expier   (14.12.2006 в 16:45)
 

А если так:

SELECT personal.id_seaman , sea_service.num FROM personal, sea_service WHERE  
sea_service.del='0' AND personal.del='0' AND personal.id_rank = '1'  
AND sea_service.dwt >= '1' AND personal.id_seaman = sea_service.id_seaman GROUP BY personal.id_seaman; 


Как я думаю, ты выбираешь записи из 2х таблиц НЕ с одинаковым id_seaman, а все подряд.
Я добавил AND personal.id_seaman = sea_service.id_seaman

   
 
 автор: Trianon   (03.08.2007 в 00:00)   письмо автору
 
   для: Expier   (14.12.2006 в 16:45)
 

Если Вы указываете GROUP BY поле_группировки, то любые поля в SELECT, отличные от этого поля должны фигурировать только внутри агрегатов(MIN, MAX, COUNT, SUM etc...).
Если Вы не знаете что такое агрегатные функции - не применяйте GROUP BY вообще.
GROUP BY существует только и исключительно чтобы формировать группы данных для агрегатных функций.

   
 
 автор: oradev   (03.08.2007 в 17:11)   письмо автору
 
   для: Trianon   (03.08.2007 в 00:00)
 


Что вы на человека обрушились он может с FoxPro переехал

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования