Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обединить запросы? Как обединить запросы? 
:(
    Опции темы
Syn
Дата 7.5.2008, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Всем привет!
ламерский вопрос (но не пинайте плиз)

подскажите плиз чего написать чтоб одним запросом вытянуть сразу несколько данных.

пример:

имеем запросы (все в одну таблу)
Код

21: SELECT title FROM jos_categories WHERE id=8
22: SELECT title FROM jos_categories WHERE id=9
23: SELECT title FROM jos_categories WHERE id=17
24: SELECT title FROM jos_categories WHERE id=25
25: SELECT title FROM jos_categories WHERE id=24
26: SELECT title FROM jos_categories WHERE id=10
27: SELECT title FROM jos_categories WHERE id=20
28: SELECT title FROM jos_categories WHERE id=21
29: SELECT title FROM jos_categories WHERE id=22
30: SELECT title FROM jos_categories WHERE id=12
31: SELECT title FROM jos_categories WHERE id=28
32: SELECT title FROM jos_categories WHERE id=32
33: SELECT title FROM jos_categories WHERE id=30
34: SELECT title FROM jos_categories WHERE id=29
35: SELECT title FROM jos_categories WHERE id=27


как написать, чтоб одним запросом вытянуть сразу все эти id.

Это сообщение отредактировал(а) Syn - 7.5.2008, 02:55
PM MAIL   Вверх
ksili
Дата 7.5.2008, 04:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Код

SELECT title FROM jos_categories 
WHERE (id=8 or id=9 or id=17 or id=24 or id=25 or ....)



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
hollywood
Дата 7.5.2008, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Цитата(Syn @  7.5.2008,  02:53 Найти цитируемый пост)
как написать, чтоб одним запросом вытянуть сразу все эти id.

или так:
Код

SELECT title FROM jos_categories WHERE id IN (8, 9, 17, ...)

PM MAIL   Вверх
Syn
Дата 7.5.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



клёво  smile 
спасиб.

есть один нюанс...
id заранее мы не знаем.
эти id как раз и получает скрипт в запросе.

сейчас у меня запрос вот так написан

Код

if ($pg_id = $database->loadResult()) {
    $q    = "SELECT p.product_id, c.category_id, c.category_flypage ";
    $q .= "FROM #__".VM_TABLEPREFIX."_product AS p ";
    $q .= "INNER JOIN #__".VM_TABLEPREFIX."_product_category_xref AS x ";
    $q .= "ON p.product_id = x.product_id ";
    $q .= "INNER JOIN #__".VM_TABLEPREFIX."_category AS c ";
    $q .= "ON c.category_id = x.category_id ";
    $q .= "WHERE p.product_id = $pg_id";

    $database->setQuery($q);

    $row = null;


Это сообщение отредактировал(а) Syn - 7.5.2008, 10:35
PM MAIL   Вверх
Syn
Дата 7.5.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



выше я написал не совсем полно и правильно, уж простите.
собсо вот что имеем:

Код

45: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='1' AND jos_vm_category.category_id='1'
46: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='2' AND jos_vm_category.category_id='2'
47: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='3' AND jos_vm_category.category_id='3'
48: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='4' AND jos_vm_category.category_id='4'
49: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='5' AND jos_vm_category.category_id='5'
50: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='14' AND jos_vm_category.category_id='14'
51: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='34' AND jos_vm_category.category_id='34'
52: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='32' AND jos_vm_category.category_id='32'
53: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='1' AND jos_vm_category.category_id='1'
54: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='33' AND jos_vm_category.category_id='33'
55: SELECT category_id, category_name,category_parent_id FROM jos_vm_category, jos_vm_category_xref WHERE jos_vm_category_xref.category_child_id='2' AND jos_vm_category.category_id='2'


вот код, который нужно поправить:

Код

function create_category_path($category_id) {
    global $database;

    $vmsefpath = '';
    do {
        $q = "SELECT category_id, category_name,category_parent_id FROM #__".VM_TABLEPREFIX."_category, #__".VM_TABLEPREFIX."_category_xref WHERE ";
        $q .= "#__".VM_TABLEPREFIX."_category_xref.category_child_id='$category_id' ";
        $q .= "AND #__".VM_TABLEPREFIX."_category.category_id='$category_id'";
        $database->setQuery($q);
        $database->loadObject($row);
        if ($row->category_parent_id) {
            $link = sefencode($row->category_name);
            $vmsefpath = '/'. $link. $vmsefpath;
        } else {
            $link = sefencode($row->category_name);
            $vmsefpath = $link . $vmsefpath;
        }
        $category_id = $row->category_parent_id;
    } while ($row->category_parent_id<>0);

    return $vmsefpath;
}


Это сообщение отредактировал(а) Syn - 7.5.2008, 14:35
PM MAIL   Вверх
Deniz
Дата 7.5.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Код

... WHERE 
  jos_vm_category_xref.category_child_id=jos_vm_category.category_id 
and 
  jos_vm_category.category_id in (1, 2, 3, 4, 5, ...)



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Syn
Дата 7.5.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



не хочет такая конструкция работь.
и id может иметь любое произвольное число.
PM MAIL   Вверх
Deniz
Дата 8.5.2008, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(Syn @  7.5.2008,  17:26 Найти цитируемый пост)
не хочет такая конструкция работь.
и id может иметь любое произвольное число. 
Какая конструкция? Как не хочет? Что говорит? Что значит ID может иметь произвольное число? Ты же в скрипте формируешь запрос, там и напиши это "любое произвольное число".
Запрос с in можно оформить и с параметром, но это отдельный разговор.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Syn
Дата 8.5.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Цитата

Код

... WHERE 
  jos_vm_category_xref.category_child_id=jos_vm_category.category_id 
and 
  jos_vm_category.category_id in (1, 2, 3, 4, 5, ...)


вот такая конструкция не хочет работать.

Цитата

Что значит ID может иметь произвольное число?

id может иметь целочисленное значение от 1 до бесконечности.
id это всего лишь идентификатор категории, товара и т.д.

Цитата

Ты же в скрипте формируешь запрос, там и напиши это "любое произвольное число".
Запрос с in можно оформить и с параметром, но это отдельный разговор.

я вам очень благодарен за ответы.
проблема в том что я не программер, соррь
и толком не знаю пока как и что пишется.
PM MAIL   Вверх
Deniz
Дата 8.5.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(Syn @  8.5.2008,  13:34 Найти цитируемый пост)
вот такая конструкция не хочет работать.
ты хочешь чтобы мы угадали почему? Что значит не хочет? Выдает не то или ошибка в запросе?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Syn
Дата 8.5.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Цитата

ты хочешь чтобы мы угадали почему?

нет конечно.

Цитата

Что значит не хочет?

выдает не то.
в смысле неправильные ссылки получаются.
формирует http://site/.index.php
PM MAIL   Вверх
Magnifico
Дата 8.5.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 4
Всего: 17



 у тебя в таблице jos_vm_category_xref  значения в  поле category_child_id :
1
2
3
4
...
и  в  таблице jos_vm_category  значения в поле category_id:
1
2
3
...
тебе нужно просто соединить таблицы
Код

 SELECT category_id, category_name, category_parent_id 
FROM  jos_vm_category as t1 ,   jos_vm_category_xref  as t2
WHERE    t2.category_child_id  =   t1.category_id



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
Syn
Дата 8.5.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



сенкс
ща испытаем

хоя...
врядли так будет работать.
это ведь id главных и дочерних категорий.


Это сообщение отредактировал(а) Syn - 8.5.2008, 18:25
PM MAIL   Вверх
Syn
Дата 8.5.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.5.2008

Репутация: нет
Всего: нет



Цитата(Magnifico @ 8.5.2008,  13:59)
у тебя в таблице jos_vm_category_xref  значения в  поле category_child_id :
1
2
3
4
...
и  в  таблице jos_vm_category  значения в поле category_id:
1
2
3
...
тебе нужно просто соединить таблицы
Код

 SELECT category_id, category_name, category_parent_id 
FROM  jos_vm_category as t1 ,   jos_vm_category_xref  as t2
WHERE    t2.category_child_id  =   t1.category_id


таким макаром тоже не выходит  smile 

Это сообщение отредактировал(а) Syn - 8.5.2008, 21:05
PM MAIL   Вверх
Magnifico
Дата 8.5.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 4
Всего: 17




Цитата

таким макаром тоже не выходит


не выходит что? Эти запросы напрямую в базу надо вводить (твой скрипт тут не причем)
соответсвенно запрос должен возвращать или набор данных или сообщения об ошибках:
хотелось бы  увидеть то или другое !




--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.