|
|
|
| Есть таблица ads, в ней поле category (INT)
Есть таблица categories, она связана с ads как categories.сategories_id=ads.category
и имеет поле system_name (VARCHAR)
Нужно сформировать запрос, который был выводил записи из таблицы ads, где:
categories.system_name='Sport'
Сейчас уже есть сложный запрос по 2 таблицам, нужно связать с 3-й таблицей categories.
Вот что имеется:
<?
if (!empty($options['city']) && !empty($options['state'])) {
$where=' advertisers.city='.$this->db->escape($options['city']).' AND advertisers.state='.$this->db->escape($options['state']).' AND ';
}
if (!empty($options['category'])) { $where_category =' advertisers.zip='.$this->db->escape($options['category']).' AND ';}
if (!empty($options['zip'])) { $where_zip=' advertisers.zip='.$this->db->escape($options['zip']).' AND ';}
$result=$this->db->query("SELECT * FROM ads LEFT JOIN advertisers ON ads.adv_id = advertisers.advertisers_id
WHERE ".$where.$where_zip." ads.type=".$this->db->escape($options['type'])."")->result();
} else {
$result = $this->db->get('ads')->result();
}
?>
|
| |
|
|
|
|
|
|
|
для: oliwinb
(06.08.2012 в 11:46)
| | Надо что-то вроде этого присобачить:
<?
$where_category =' categories.system_name='.$this->db->escape($options['category']).' AND ads.category=categories.categories_id';
?>
|
| |
|
|
|
|
|
|
|
для: oliwinb
(06.08.2012 в 12:06)
| | Приблизительно так:
SELECT * FROM ads LEFT JOIN advertisers ON ads.adv_id = advertisers.advertisers_id WHERE advertisers.zip='MD-3900' AND ads.type=1 AND categories.system_name='food' AND ads.category=categories.categories_id
|
Но ругается
Unknown column 'categories.system_name' in 'where clause' | |
|
|
|
|
|
|
|
для: oliwinb
(06.08.2012 в 13:40)
| | Пробовал так:
Заработало вот так:
SELECT * FROM ads LEFT JOIN advertisers ON ads.adv_id = advertisers.advertisers_id LEFT
JOIN categories ON categories.system_name='food' AND ads.category=categories.categories_id
WHERE advertisers.zip='MD-3900' AND ads.type=1
|
| |
|
|
|
|
|
|
|
для: oliwinb
(06.08.2012 в 13:55)
| | Оказалось, что запрос неверно выполняется: не учитывает знаяение поля categories.system_name='6868'
SELECT * FROM ads LEFT JOIN advertisers ON ads.adv_id = advertisers.advertisers_id LEFT
JOIN categories ON categories.system_name='6868' AND ads.category=categories.categories_id
WHERE advertisers.zip='36300' AND ads.type=3 AND (ads.end_time >= 1344334741 AND
1344334741 >= ads.start_time)
|
| |
|
|
|
|
|
|
|
для: oliwinb
(07.08.2012 в 14:31)
| | Сделал так, кому интересно:
SELECT * FROM ads
LEFT JOIN advertisers ON ads.adv_id = advertisers.advertisers_id LEFT
JOIN categories ON ads.category=categories.categories_id WHERE advertisers.zip='3300' AND ads.type=2 AND (ads.end_time >= 1344336386 AND 1344336386 >= ads.start_time);
|
| |
|
|
|
|
|
|
|
для: oliwinb
(07.08.2012 в 14:46)
| | - Всегда интересно поговорить с умным человеком!... С собой! =))))))) | |
|
|
|