) title, url_title, categories를 가져 오는 MYSQL 쿼리를 작성하려고 시도하고 있으며 category 열의 값에 따라 값이있는 URL 필드도 설정합니다.조건부 MySQL 쿼리 (
내가해야 할 일은 카테고리 열에 카테고리 10이 포함되어 있으면 url_title을 첨부하여 URL 열의 값을 http://www.mydomain.tld으로 설정하고 파이프로 구분 된 카테고리 열 (예 : 10 | 122 | 40 | 187)을 확인해야합니다. , 40,80 그 밖의 카테고리에 해당 카테고리가 없으면 URL을 http://www.mydomain2.tld으로 url_title을 추가하여 설정하십시오.
아래 조건을 사용하려고했지만 분명히 잘못하고 있습니다.
SELECT exp_channel_data.entry_id AS entry_id, exp_channel_titles.title AS title, exp_channel_titles.url_title AS url_title, GROUP_CONCAT(cp.cat_id SEPARATOR '|') AS categories,
IF('122,123,124,125,126,127,128,129,130,131,132,187' IN categories,
(CONCAT('http://www.mydomain.tld',url_title AS 'URL')),
(CONCAT('http://www.mydomain2.tld',url_title AS 'URL'))
)
FROM data
FROM exp_channel_data
LEFT JOIN exp_channel_titles ON exp_channel_titles.entry_id = exp_channel_data.entry_id
LEFT JOIN exp_category_posts AS cp ON exp_channel_data.entry_id = cp.entry_id
다음은 테이블 구조입니다.
exp_channel_data
-------------
entry_id int 10
exp_channel_titles
-------------
entry_id int 10
title varchar 100
url_title varchar 100
exp_category_posts [this is the junction table that has been referred to]
-------------
entry_id int 10
cat_id int 10
나는 모든 조언에 감사드립니다.
업데이트 : 사용중인 쿼리로 업데이트했습니다. 나는 그 질문을 단순화하려고 노력했지만 이것이 바 디데아라는 것을 깨달았다. 위의 테이블 구조도 포함 시켰습니다. 당신이 형편없는 데이터 구조를 가지고 있기 때문에
구분 된 목록을 열에 저장하지 마십시오. 관계형 데이터베이스는 목록을 저장하기위한 훌륭한 데이터 형식을 가지고 있습니다. 이 테이블의 테이블, 특히이 경우 접합점 테이블이라고합니다. –
젠장, 나는 틀린 URL을 붙여 넣었다. 나는 의미 : 가능한 복제 [어떻게 MySQL의 위치 순서에 관계없이 쉼표의 문자열을 일치시킬 수 있습니다] (http://stackoverflow.com/questions/25887713/how-can-match-a-string-of-comma 분리 된 - 관계없이 - 주문 순위/25887934 # 25887934). – GolezTrol
죄송합니다. 범주를 파이프로 구분하여 저장하지 않도록 추가해야합니다. 내 쿼리에서 이들을 하나의 필드로 연결했습니다. – doubleplusgood