
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||
![]() ![]() sphinxCorp. ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2755 Пользователь №: 23462 На форуме: Карма: 96 Трезвый : 13 лет, 3 месяца, 7 дней ![]() |
Добрый вечер)
есть три таблицы product subcategory category Мне нужно: 1)Чтобы вначале у товара выбиралась подкатегория, потом 2)На основе к какой подкатегории принадлежит, выбрать категорию Делаю так $query_cat = mysqlQuery('select * from '.SPH_DBPREFIX.'product where id_subcategory = "'.$GET['id'].'"'); Возможно ли как то объединить или упростить запрос? Спустя 13 минут, 32 секунды (17.12.2011 - 18:48) Игорь_Vasinsky написал(а): JOIN mysql - почитай. Спустя 19 часов, 1 минута, 46 секунд (18.12.2011 - 13:50) SlavaFr написал(а): минимальное описание JOIN-ов http://phpforum.ru/index.php?showtopic=374...t=0#entry800164 Спустя 4 часа, 56 минут, 54 секунды (18.12.2011 - 18:46) nugle написал(а): я объядинил два запроса и получилось так $query_cat = mysqlQuery('select * from '.SPH_DBPREFIX.'product inner join '.SPH_DBPREFIX.'subcategory on еще упростить можно как нибудь? Спустя 19 минут, 51 секунда (18.12.2011 - 19:06) caballero написал(а): зачем писать inner лнл и так по дефолту а вообще убрать нафиг join и связать таблицы в обычном WHERE ну и алиасы таблицам при таких длинных именах не помешали бы и чего третью таблицу не привязал сразу Спустя 3 минуты, 10 секунд (18.12.2011 - 19:09) nugle написал(а): caballero а как третью через join привезать? Спустя 13 минут, 28 секунд (18.12.2011 - 19:23) caballero написал(а): точно также как и вторую но если хочешь сократить запрос убери Join вообще и свяжи таблицы в условии WHERE Спустя 1 минута, 3 секунды (18.12.2011 - 19:24) Игорь_Vasinsky написал(а): также ![]() Спустя 18 минут, 21 секунда (18.12.2011 - 19:42) inpost написал(а): nugle Учимся оформлять красиво, и читать так проще. SELECT * Спустя 1 час, 1 минута, 40 секунд (18.12.2011 - 20:44) nugle написал(а): Спасибо всем, все прекрасно работает Спустя 2 часа, 55 минут, 50 секунд (18.12.2011 - 23:40) sergeiss написал(а):
Позволь уточнить... Хотя такое связывание формально и не использует JOIN, но все равно это JOIN ![]() Кусочек из хэлпа по Мускулю: Свернутый текст The evaluation of multi-way natural joins differs in a very important way that affects the result of NATURAL or USING joins and that can require query rewriting. Suppose that you have three tables t1(a,B ), t2(c,B ), and t3(a,c ) that each have one row: t1(1,2), t2(10,2), and t3(7,10). Suppose also that you have this NATURAL JOIN on the three tables: SELECT ... FROM t1 NATURAL JOIN t2 NATURAL JOIN t3; Previously, the left operand of the second join was considered to be t2, whereas it should be the nested join (t1 NATURAL JOIN t2). As a result, the columns of t3 are checked for common columns only in t2, and, if t3 has common columns with t1, these columns are not used as equi-join columns. Thus, previously, the preceding query was transformed to the following equi-join: SELECT ... FROM t1, t2, t3 WHERE t1.b = t2.b AND t2.c = t3.c; That join is missing one more equi-join predicate (t1.a = t3.a). As a result, it produces one row, not the empty result that it should. The correct equivalent query is this: SELECT ... FROM t1, t2, t3 WHERE t1.b = t2.b AND t2.c = t3.c AND t1.a = t3.a; If you require the same query result in current versions of MySQL as in older versions, rewrite the natural join as the first equi-join. |
||
![]() |
![]() ![]() ![]() |