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 :: JOIN Запрос

 PHP.SU

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


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

> Описание: yii
pantela
Отправлено: 15 Сентября, 2013 - 19:00:03
Post Id



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


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


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




С фреймворкам yii только начал работать. Имеются 3 вида продукта, у каждой своя таблица:

1. deposit_block
2. deposit_unblock
3. deposit_normal


Ещё есть таблицы выносов "clients" которая определяет вывод на страница пользователю свой продукт. (это работает правильно)

Ещё есть таблицы выносов "withdrawal"

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `withdrawal` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `product_type` tinyint(1) NOT NULL,
  4.   `product_id` int(11) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;


Требуется для каждого продукта вытащить свою запись последного выноса. из "withdrawal"

Запрос построил так, на сколько верно?
CODE (SQL):
скопировать код в буфер обмена
  1.                 ->select('t.*, c.*, w.months, w.amount as w_amount')
  2.                 ->from('deposit_block t')
  3.                 ->join('clients c','t.client_id = c.id')
  4.                 ->join('withdrawal w','t.id = w.product_id')
  5.                 ->where('t.id=:id and w.product_type = 1', array(':id'=>$id))
  6.                 ->queryRow();

Но не понимаю как надо добавить что бы из таблицы "withdrawal" бралось бы последная запись продукта.
Если прописать ->order('w.id DESC') тогда он сортирует все записи вроде по АД выноса, но под таблицу продукта. (т.е. не верно.)

Тут что-ли запрос надо переписать так что бы SELECT в SELECT был бы Растерялся Подругому никак? Если так как переписать тогда Растерялся

Надеюсь понятно составил задачу проблемы.

спс.Ув.

(Отредактировано автором: 15 Сентября, 2013 - 19:00:52)

 
 Top
esterio
Отправлено: 16 Сентября, 2013 - 01:58:06
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




опишите связи в AR
 
 Top
pantela
Отправлено: 16 Сентября, 2013 - 02:36:42
Post Id



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


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


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




 
 Top
esterio
Отправлено: 16 Сентября, 2013 - 11:01:59
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




AR - ето Active Record. В нем есть метод relations, который должен возвращать массив с конфигом связей.
 
 Top
pantela
Отправлено: 17 Сентября, 2013 - 23:46:25
Post Id



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


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


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




Эх не опилить мне наверное это, перенесите пожалуйста тему в "Напишите за меня" ((
спс.Ув.
 
 Top
tato
Отправлено: 19 Сентября, 2013 - 07:52:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


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




Что мешает выбрать из таблицы withdrowal, а джойнить clients и diposit_block? Тогда order() нормально сработает.


-----
просто ?: сложно
 
 Top
Champion Супермодератор
Отправлено: 19 Сентября, 2013 - 12:11:37
Post Id



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


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


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




->join('withdrawal w','t.id = w.product_id AND w.id = (SELECT max(id) FROM withdrawal where product_id = t.id)')

А еще: гадость - эти ваши ->join()->join()->where()
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB