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
Форумы портала PHP.SU :: Версия для печати :: JOIN Запрос
Форумы портала PHP.SU » » Вопросы новичков » JOIN Запрос

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

1. pantela - 15 Сентября, 2013 - 19:00:03 - перейти к сообщению
С фреймворкам 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 был бы Растерялся Подругому никак? Если так как переписать тогда Растерялся

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

спс.Ув.
2. esterio - 16 Сентября, 2013 - 01:58:06 - перейти к сообщению
опишите связи в AR
3. pantela - 16 Сентября, 2013 - 02:36:42 - перейти к сообщению
Не знаком мне AR Огорчение
Нашёл это http://hashcode[dot]ru/questions/124[dot][dot][dot]рос-в-yii-или-ar
4. esterio - 16 Сентября, 2013 - 11:01:59 - перейти к сообщению
AR - ето Active Record. В нем есть метод relations, который должен возвращать массив с конфигом связей.
5. pantela - 17 Сентября, 2013 - 23:46:25 - перейти к сообщению
Эх не опилить мне наверное это, перенесите пожалуйста тему в "Напишите за меня" ((
спс.Ув.
6. tato - 19 Сентября, 2013 - 07:52:26 - перейти к сообщению
Что мешает выбрать из таблицы withdrowal, а джойнить clients и diposit_block? Тогда order() нормально сработает.
7. Champion - 19 Сентября, 2013 - 12:11:37 - перейти к сообщению
->join('withdrawal w','t.id = w.product_id AND w.id = (SELECT max(id) FROM withdrawal where product_id = t.id)')

А еще: гадость - эти ваши ->join()->join()->where()

 

Powered by ExBB FM 1.0 RC1