2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
1 | |
Два запроса в одном09.02.2016, 12:57. Показов 5198. Ответов 16
Метки нет (Все метки)
К теме Как будет выглядеть следующий запрос
Имеем те же 3 таблицы Таблица 1 НАИМЕНОВАНИЯ: id name 1 знач1 2 знач2 Таблица 2 КАТЕГОРИИ: id cat 1 кат1 2 кат2 Таблица 3 КАТ-НАИМ: id idname idcat 1 idзнач1 idкат2 2 idзнач2 idкат1 Я вывожу список значений таблицы НАИМЕНОВАНИЯ, а еще в этом списке хочу рядом выводить к какой категории относится строка таблицы наименование, т.е. соотнести строка=такаятокатегория. Не могу такой запрос соорудить. Помогите плз.
0
|
09.02.2016, 12:57 | |
Ответы с готовыми решениями:
16
Два запроса в одном Два запроса в одном Два ajax запроса в одном Два запроса в одном коннекте |
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
09.02.2016, 13:20 [ТС] | 3 |
0
|
Zero day
|
||||||
09.02.2016, 14:11 | 4 | |||||
Сообщение было отмечено Zhdanoff как решение
Решение
Видимо так:
0
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
09.02.2016, 14:24 [ТС] | 5 |
0
|
Zero day
|
||||||
09.02.2016, 14:40 | 6 | |||||
Сообщение было отмечено Zhdanoff как решение
Решение
Это алиасы таблиц, они не обязательны, просто для удобства.
Добавлено через 48 секунд а буква v - это "имя подзапроса", с котором идет второе объединение. Добавлено через 3 минуты Но можно это реализовать через неявное объединение, как-то так вроде:
0
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
09.02.2016, 15:18 [ТС] | 7 |
а почему мы выбираем v.name, w.cat
"FROM КАТЕГОРИИЦ" если там только cat есть?
0
|
Zero day
|
|
09.02.2016, 15:27 | 8 |
Я же дописал, про v.
w - это алиас таблицы КАТЕГОРИИ. v - это алиас подзапроса. В внешнем запросе, который строит требуемый вывод нужно поле, которое есть в внутреннем запросе. Вот, чтобы вытащить в вывод внешнего поле из внутреннего, используется алиас v и по нему обращаемся к полю name.
0
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
09.02.2016, 15:54 [ТС] | 9 |
0
|
Zero day
|
|
09.02.2016, 15:59 | 10 |
Сообщение было отмечено Zhdanoff как решение
Решение
Служит для того, чтобы к таблице в пределах данного SQL-запроса можно было обращаться по другому имени.
Обычно применяется: а) в целях повышения читаемости запросов б) в целях многократного использования одной и той же таблицы в одном запросе. в) для именования подзапросов. Взято с другого форума аналогичной тематики. Как вариант объяснения.
0
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
09.02.2016, 22:08 [ТС] | 11 |
"SELECT category.id, category.name, catpag.idcat, catpag.idpage, pages.id, pages.title, pages.meta_d FROM category, catpag, pages WHERE catpag.idcat = category.id, catpag.idpage = pages.id "
вот просто и понятно, пришлось перерыть докуя сайтов, где нормально описано, но все ровно спасибо, что не прошел мимо как грится сори, немного не то
0
|
Zero day
|
|
10.02.2016, 09:26 | 12 |
Такой вариант тоже верный, просто записан иначе. В данном случае, идет "явное" указание таблицы, в которой присутствует поле. category.id - обращение к таблице category, поле id. Такая запись вполне себе нормальная, но это не алиас. Алиас - это типа "кличка" или краткое имя таблицы (или подзапроса). И записав раз category v (имя алиаса может быть любым), мы можем обращаться к таблице по нему, т.е. v.id. Запись получается короче, на мой взгляд, более читаемая, да и быстрее можно записать поля, которые нужны для вывода.
А вообще, можно еще указывать и имя схемы перед именем таблицы. Разницы в результирующем наборе от этого не будет.
0
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
10.02.2016, 09:38 [ТС] | 13 |
не сработало как надо, отобразились только те записи у которых есть категории, как изменить этот запрос, чтобы отображались и строки БЕЗ категорий?
Добавлено через 10 минут уже 2й день е*усь над каким то запросом
0
|
Zero day
|
||||||
10.02.2016, 09:46 | 14 | |||||
А так что выводит?
Наименования - names Категории - cats Кат-наим - cat_names ---
val - это имя подзапроса (оно произвольное) и по нему идет обращение к полю idcat.
1
|
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 174
|
|
10.02.2016, 09:52 [ТС] | 15 |
"SELECT t1.id, t1.title, t1.meta_d, t2.id, t2.name, t3.idcat, t3.idpage
FROM pages t1 LEFT JOIN catpag t3 ON t3.idpage = t1.id LEFT JOIN category t2 ON t2.id = t3.idcat" все заработало я выбрал все поля нужные
0
|
0 / 0 / 0
Регистрация: 26.09.2017
Сообщений: 1
|
|||||||||||
18.01.2018, 16:37 | 17 | ||||||||||
Добрый день. Помогите с запросом. Opencart. Нужно отключить товары(status=0) у определенных категорий товаров. Таблицы соотносятся 1 ко множеству(oc_product -> oc_product_to_category).
Такой запрос возвращает 0. Думаю нужно как-то 1к1. Наверное.
Думать полезно. Всем спасибо.
0
|
18.01.2018, 16:37 | |
18.01.2018, 16:37 | |
Помогаю со студенческими работами здесь
17
Два запроса к одной таблице в одном Два http get запроса в одном AsyncTask Можно ли вывести два запроса в одном? Как составить два запроса в одном шаге ADOQuery1? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |