|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 5
|
||||||||||||||||||||||||||||||||||||||
Как лучше сделать выборку из двух таблиц?15.02.2014, 19:43. Показов 2349. Ответов 13
Метки нет (Все метки)
У меня две таблицы:
Надо сделать выборку: Фрукты
Делал выборку так:
0
|
||||||||||||||||||||||||||||||||||||||
| 15.02.2014, 19:43 | |
|
Ответы с готовыми решениями:
13
Как сделать выборку для двух таблиц? Как сделать linq выборку из двух таблиц в одну GridView? |
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||||
| 15.02.2014, 20:02 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 5
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15.02.2014, 21:00 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Предупреждаю заранее: пишу в первый раз, так что извиняюсь за такое оформление вопроса
У меня две таблицы:
Надо сделать выборку: Фрукты
Делал выборку так:
Слишком много раз обращается к базе Решил сделать выборку с LEFT JOIN:
как из этого безобразия сделать списки? Ведь {Предметы}(Фрукты,Овощи и Мясо) повторяться будут. А м не надо чтобы один раз они вышли Как лучше? Или подскажите другой вариант Добавлено через 57 секунд Извиняюсь в начале нечаянно отправил не дописав Добавлено через 20 минут Добавлено через 30 минут ![]() кто может объяснить как тут действует присвоение?
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 15.02.2014, 21:47 | |
|
а тчо там не понятного?
$is_new_cat присваивается значение выражения $tmp != $row['map'] другой вопрос, зачем выбирать кучу раз имена категорий? лучше сделать два запроса, в первом выбрать категории , во втором выбрать содержимое. чем больше будет данных в категориях, тем правильней будет использовать два запроса ![]() а если учесть, что таблицы у вас одинаковы, то есть по сути по 2 поля, не считая связи, то можно вообще в одной таблице хранить всё
0
|
|
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 5
|
|
| 15.02.2014, 22:01 [ТС] | |
|
Вот как раз только что дошёл до этого.
удивляюсь чего это в IF-е нету условий, только переменная. и понял что это в переменной стоит условие( $tmp != $row['map']) а так я в процессе обучения PHP. и стараюсь использовать разные варианты решения как я писал используя LEFT JOIN как раз таки и получается одна таблица, но там категории повторяються получается.
0
|
|
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
||||||
| 16.02.2014, 02:17 | ||||||
|
Вообще-то это делается одним запросом
0
|
||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||
| 16.02.2014, 02:34 | ||
|
вот только не всегда 1 запрос будет работать оптимальней по ресурсам чем 2 с данной структурой
0
|
||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 16.02.2014, 02:46 | |
|
правильно давайте делать по запросу на категорию так "конечно" оптимальнее
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.02.2014, 02:48 | |
|
Уважаемый, если Вы не понимаете, о чём речь, не нужно пытаться язвить...
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 16.02.2014, 10:56 | |
|
zebulun, в данном случае, если объем данных большой, действительно будет оптимальнее использовать два запроса. Первым запросом извлекаются все категории, вторым запросом все товары. Если бы не было вывода заголовка категории, то лучше было бы обойтись одним запросом, здесь лучше несколькими, это я просто плохо подумал..
0
|
|
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 16.02.2014, 13:41 | |
|
KOPOJI, А можно более конкретное условие, при котором, в данном случае два запроса лучше, или ссылочку...
Добавлено через 8 минут KOPOJI, Возможно, вы имели ввиду, если много именно категорий, тогда лучше два запроса? Если нет, тогда , если нетрудно, конкретизируйте, при каких объемах, в данном случае, лучше два запроса, или ссылочку...
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 16.02.2014, 13:43 | ||
|
0
|
||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
||||||
| 16.02.2014, 16:02 | ||||||
|
Не нашлось подходящей таблицы с 1000 записей на категорию, но вот нашлась такая
BEGIN: 1392551740.2562 END:1392551740.2731 END - BEGIN: 0.016964912414551 MY RESULT WITH 168 CATEGORIES AND 1990 ARTICLES = 0.016964912414551 BEGIN: 1392551740.2731 END2:1392551740.3101 END2 - BEGIN2: 0.036981105804443 YOUR RESULT WITH 168 CATEGORIES AND 1990 ARTICLES = 0.036981105804443
0
|
||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.02.2014, 18:36 | |
|
ох... это что за код???
какой нафиг запрос в цикле? где о этом говориться? вам раз 100 написали что всего 2 запроса. а вы запросы в цикле шлёте... нормальный код, при такой таблице как у ТС, будет отличатся на на 1-5%, а у вас на 300%. а если не будет индексов, так код с 1 запросом изначально проиграет. да и зачем вы засекаете время всего скрипта? с пхп кодом? бд нужно разгружать чаще сем пхп. простой пример, сайт с 30к уников в день, нагрузка на проц от сайта 4-5% в пик нагрузка на бд до 100%. а вы тут замеряете пхп код... при 1 запросе, будет куча раз дублирование данных, + будет левое соединение, ибо нужно выбрать не толь ко те категории где есть вложения. трафик между субд и может вырасти в сотни раз из за 1 запроса вместо 2х выборка с лефт джоин тоже даст доп время. даже просто формирование ответа от субд и то будет дольше из за ненужных тысяч дублирований строк. а если это на удалённом хосте, как Вы сами написал? то от трафика ещё время доставки данных возрастёт. да и в пхп скрипте, если уж на то пошло, память сожрёт гораздо больше, если вернуть дублированный данные. а представьте что вы выбираете блоги с тегами, 1 запросом, у вас в тысячи раз будет больше памяти расходоваться с 1 запросом, и время тут тоже пострадает, когда на один маленький тег типа ajax будет скопирован весь блог.
0
|
|
| 16.02.2014, 18:36 | |
|
Помогаю со студенческими работами здесь
14
Как сделать выборку из двух таблиц БД Access и отобразить на форме Сделать выборку из двух таблиц
Как сделать выборку из двух таблиц, где отличаются по типу один из столбцов. Выдать надо все данные
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|