我有一个 Ads 表和一个 Ads_field 表,当我加入时,我会得到一个广告的多行,因为它们有多个字段
有没有办法将字段显示为列?
SELECT Ads.CITY_ID,Ads.PRICE,Ads.CREATED_DATE,Ads.HAS_IMAGES,
Ads.TITLE, Ads.DESCRIPTION, loc_cities.name as city, CATEGORY.NAME as
category_name, loc_countries.country_name as
country,Ads_fields.field_value
FROM Ads
INNER JOIN loc_cities ON Ads.CITY_ID=loc_cities.id
INNER JOIN CATEGORY ON Ads.CATEGORY_ID=CATEGORY.ID
INNER JOIN loc_countries ON Ads.country_code=loc_countries.ID
INNER JOIN Ads_fields ON Ads.ID=Ads_fields.ad_id
WHERE CONVERT(Ads.TITLE USING utf8) LIKE '%reqqa%'
or CONVERT(Ads.DESCRIPTION USING utf8) LIKE '%reqqa%'
or CONVERT(loc_cities.name USING utf8) LIKE '%reqqa%'
or CONVERT(loc_countries.country_name USING utf8) LIKE '%reqqa%'
or CONVERT(CATEGORY.name USING utf8) LIKE '%reqqa%'
LIMIT 50
最佳答案
一种简单的方法是将 field_value 显示为逗号分隔的字符串
SELECT
Ads.CITY_ID,Ads.PRICE
, Ads.CREATED_DATE,Ads.HAS_IMAGES
, Ads.TITLE
, Ads.DESCRIPTION
, loc_cities.name as city
, CATEGORY.NAME as category_name
, loc_countries.country_name as country
, group_concat(Ads_fields.field_value)
FROM Ads
INNER JOIN loc_cities ON Ads.CITY_ID=loc_cities.id
INNER JOIN CATEGORY ON Ads.CATEGORY_ID=CATEGORY.ID
INNER JOIN loc_countries ON Ads.country_code=loc_countries.ID
INNER JOIN Ads_fields ON Ads.ID=Ads_fields.ad_id
WHERE CONVERT(Ads.TITLE USING utf8) LIKE '%reqqa%'
or CONVERT(Ads.DESCRIPTION USING utf8) LIKE '%reqqa%'
or CONVERT(loc_cities.name USING utf8) LIKE '%reqqa%'
or CONVERT(loc_countries.country_name USING utf8) LIKE '%reqqa%'
or CONVERT(CATEGORY.name USING utf8) LIKE '%reqqa%'
GROUP BY Ads.CITY_ID,Ads.PRICE
, Ads.CREATED_DATE,Ads.HAS_IMAGES
, Ads.TITLE
, Ads.DESCRIPTION
, loc_cities.name
, CATEGORY.NAME
, loc_countries.country_name
LIMIT 50
关于php - SQL Join Ads with their Fields 将字段显示为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45529614/