2012-07-10 5 views
-1

나는 이런 식의 스키마를 가지고 있습니다. 뉴스 목록에 대해 열을 두드리는 열에서 WHEREORDER BY을 가질 수 있음을 알고 싶습니다.다중 관계 테이블의 mysql 조건 및 순서

의 category.id = x 및 cartable.status = 3이고 = 4 ... user.id

news 
------------------------------------------------------- 
id*  title 

category 
------------------------------------------------------- 
id*  title 

cartable 
------------------------------------------------------- 
id   user_id   status* 

news_category 
------------------------------------------------------- 
news_id  category_id 

news_cartable 
------------------------------------------------------- 
news_id  cartable_id 

user 
------------------------------------------------------- 
id*  name 

유감가 업데이트 예. 문제는 이것이다 : 각 뉴스에는 많은 종류가 또한 많은 cartable가있다. 각 cartable에는 사용자가있다. 그래서 내가 어떻게 정렬하거나 그하여 조건은 where 절에 나에 의한 순서로, 그래서 그 값 중 하나가 잠재적으로 사용될 수

select * from news_category 
left join news on (news_category.news_id = news.id) 
left join category on (news_category.category_id = category.id) 
--- cartable and user ??? 
+0

... 나는 정말로 왜 보이지 않습니다. 너의 문제는 어디 있니? 당신은 실제로 무엇을하려고합니까? 해당 컬럼에서'WHERE'와'ORDER BY'를 사용해 보았습니까? 그게 당신 문제를 해결하는 가장 빠른 방법 인 것 같아요. 당신이 실제로 다른 문제를 가지고 있지 않다면 말이죠. – Palladium

+0

@ 팔라디움에서 질문을 다시 확인하지 않습니다 ... 몇 가지 설명을 그리워합니다. – sweb

답변

0

모든 테이블이 관계처럼 네, loooks 필드 수 있습니다. 원하는 출력이 정확한 경우이를 포함하고 시도한 쿼리를 포함 시키십시오. 그러면 누군가가 도울 수 있습니다.

0

즉각적인 질문에 대답하려면 예. 테이블이 서로 어떤 관계가있는 한 WHEREORDER BY을 사용하여 쿼리를 조건부로 지정할 수 있습니다.

당신은, 예를 들어, usernews을로 연결 관계의 체인의 모든 테이블을 선언해야하는 것, newsuser (즉시 서로 관련이없는 또는 일부 테이블)과 관련된해야하는 경우 (예 : news_cartablecartable) 및 WHERE 또는 ON 문을 사용하여 서로 연결할 수 있습니다 (예 : WHERE cartable_id = cartable.id AND user_id = user.id). 특정 news 항목에 연결된 사용자 (들)를 쿼리한다면 그래서, 당신의 코드는 다음과 같습니다

SELECT user.id FROM user, cartable, news_cartable, news 
WHERE news.id = news_id AND cartable_id = cartable.id AND user_id = user.id 
AND news.id = {some news ID} 

을 대신 LEFT JOIN 표를 원한다면, 당신은 두 번째 줄에 조건을 취할 수 그건 당신이 특별히 뭘 하려는지 상태,가는거야 그리고 내가 채찍질 할 수 있는지 볼 수 있습니다 무엇도 아닌 경우

FROM news 
LEFT JOIN news_cartable ON news.id = news_id 
LEFT JOIN cartable ON cartable_id = cartable.id 
LEFT JOIN user ON user_id = user.id 

:와 같은 ON 진술로 물품.

편집 : ORDER BY은 조건부 지정이 아니며 사용자가 SELECT 인 모든 열과 함께 사용할 수 있습니다. 물론주의해야 할 점은 SELECT이 (가) 쿼리에서 처음으로 편집해야한다는 것입니다.