2017-01-04 54 views
5

(ORDER BY deyimi ifadesi 1. SEÇ listesinde değil)Mysql 5.7 ile uyumsuzluk

Hata Kodu: ORDER BY deyimi 3065 sayılı İfade # 1 SELECT listesinde değil, SEÇİMİ listesinde olmayan 'webstore.level_depth' sütunları referansı; Bu

 SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite 
      FROM `pj_category_shop` cs, `pj_category` c 
      INNER JOIN `pj_category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = 1 AND cl.id_shop = 2) 
      WHERE (c.`active` = 1 OR c.`id_category` = 2) 
      AND cs.`id_category` = c.`id_category` AND cs.`id_shop` = 2 
      AND c.`id_category` != 1 
      AND `level_depth` <= 2 
      AND c.id_category IN (SELECT id_category FROM `pj_category_group` WHERE `id_group` IN (3)) 
      ORDER BY `level_depth` ASC, cl.`name` ASC; 

neden bu olay anlamıyorum DISTINCT

My Query ile uyumsuz .. ??

cevap

9

Sql modunda.Yenel olarak orderby gerçekleştiremiyoruz. Bu seçmek list.we değil aşağıdaki sorguları

SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 
+1

Aslında, yalnızca birini çalıştırmanız gerekir. GLOBAL değişkenler, sunucunun genel çalışmasını etkiler ve SESSION değişkenleri, bireysel istemci bağlantıları için işlemleri etkiler. (Https://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html). – Andres

+0

Değeri MySQL 5'den kullanmak için.6, tüm son seçeneği bırakın: 'set global SQL_MODE =" NO_ENGINE_SUBSTITUTION "; –

0

ORDER BY sütun sütun

sizin Seçim listesinde c.level_depth Ekle SELECT listesinde edilmelidir

Dene: Ben MySQL 5.7 içeren benim question.Actually için cevap bulmak zorunda

SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite, c.level_depth 
    FROM `pj_category_shop` cs, `pj_category` c 
    INNER JOIN `pj_category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = 1 AND cl.id_shop = 2) 
    WHERE (c.`active` = 1 OR c.`id_category` = 2) 
    AND cs.`id_category` = c.`id_category` AND cs.`id_shop` = 2 
    AND c.`id_category` != 1 
    AND `level_depth` <= 2 
    AND c.id_category IN (SELECT id_category FROM `pj_category_group` WHERE `id_group` IN (3)) 
    ORDER BY c.`level_depth` ASC, cl.`name` ASC; 
+0

Hızlı cevabınız için teşekkürler pradeep.Ama sorgumda değişiklik yapmadığım bir durum var. –

0

SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite FROM pj_category_shop cs, pj_category c INNER JOIN pj_category_lang yürüterek Bu işi olabilir

'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

içine

'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

onu değiştirmek zorunda cl ON (c. id_category = cl. id_category AND cl. id_ lang = 1 AND cl.id_shop = 2) WHERE (c. aktif = 1 OR c. id_category = 2) ORDER BY c. level_depth ASC, cl. adı ASC AND cs. id_category = c. id_category AND cs. id_shop = 2 AND c. id_category != 1 AND level_depth WHERE id_group IN (3));

Özetlemek gerekirse <= 2 AND c.id_category IN (SELECT id_category FROM pj_category_group, sen, SEÇ komutunun bağlamında ORDER BY var ki bu durumda gerek WHERE, FROM ve INNER JOIN ile. Column_Name ASC tarafından Sipariş/DESC eklemek yoksa Yani

: adı Sözdizimi aşağıda belirtilen Sütun temelinde Seçilmiş Sütun sipariş için kullanılan anlaşılacağı gibi tarafından

1

SQL Özelliği Sipariş olduğunu select deyimindeki veri kümesi kümesini almaya karar verdiğiniz sütun, bu hatayı alırsınız.

+0

Teşekkürler Jayesh.Ama benim sorgum mysql içinde verison sayısı 5.7 altında çalışacaktır. –