0

我已经编写了查询,但它在 where 子句中显示的城市 ID 不明确

SELECT
  `a`.`name`,
  `a`.`company`,
  `a`.`city`,
  `a`.`country`,
  `a`.`phone`,
  `a`.`type_of_enquiry`,
  `b`.`enquiry_id`,
  `a`.`hearaboutus`,
  `a`.`email`,
  `a`.`comments`,
  `a`.`address`,
  `c`.`id`,
  `c`.`city_id`
FROM (`sobha_enquiry` a)
  LEFT JOIN `sobha_enquiryzone` b
    ON `b`.`enquiry_id` = `a`.`id`
  LEFT JOIN `sobha_admin` c
    ON `c`.`city_id` = `b`.`city_id`
WHERE `city_id` = '2'
GROUP BY `a`.`id`
ORDER BY `id` desc, `a`.`id` DESC

请帮助我 !!!!!!!!!!

4

2 回答 2

3
SELECT
  `a`.`name`,
  `a`.`company`,
  `a`.`city`,
  `a`.`country`,
  `a`.`phone`,
  `a`.`type_of_enquiry`,
  `b`.`enquiry_id`,
  `a`.`hearaboutus`,
  `a`.`email`,
  `a`.`comments`,
  `a`.`address`,
  `c`.`id`,
  `c`.`city_id`
FROM (`sobha_enquiry` a)
  LEFT JOIN `sobha_enquiryzone` b
    ON `b`.`enquiry_id` = `a`.`id`
  LEFT JOIN `sobha_admin` c
    ON `c`.`city_id` = `b`.`city_id`
WHERE `a`.`city_id` = '2'
GROUP BY `a`.`id`
ORDER BY `c`.`id` desc, `a`.`id` DESC

在您的 where 子句中,您应该提供 b 或 c,因为使用别名并且两个表中都存在 city_id 列,这使 mysql 感到困惑

于 2013-04-14T05:16:15.113 回答
2

问题在于WHERE子句,您需要指定要搜索的表,因为city_id它们都包含相同的列名。它可能来自sobha_enquiryzone或来自sobha_admin

SELECT  a.NAME,
        a.company,
        a.city,
        a.country,
        a.phone,
        a.type_of_enquiry,
        b.enquiry_id,
        a.hearaboutus,
        a.email,
        a.comments,
        a.address,
        c.id,
        c.city_id
FROM    sobha_enquiry a
        LEFT JOIN sobha_enquiryzone b
                ON b.enquiry_id = a.id
        LEFT JOIN sobha_admin c
                ON c.city_id = b.city_id
WHERE   b.city_id = '2' -- or c.city_id = '2' (both will yield the same result)
GROUP   BY a.id
ORDER   BY id DESC, a.id DESC
于 2013-04-14T05:16:32.510 回答