2016-08-31 4 views
0

Microsoft SQL Server 2012 데이터베이스에 대한 SQL 쿼리를 도와 주시겠습니까? 두 열 중 하나에 값 목록의 값이 들어있는 테이블에서 일치하는 행 선택

SELECT Name 
FROM [User] u JOIN UserLike ul ON u.Id = ul.UserId 
JOIN Likeable l ON l.Id = ul.LikeableId; 

이의 그 쿼리 검색어 1 부르 자 :이 쿼리를 사용하여, 사용자가 좋아하는 사물의 이름을 얻기 위해, 그래서

User 
---------------------- 
Id   int 
UserName nvarchar 


Likeable 
--------------------- 
Id   int 
Name  nvarchar 


UserLike 
---------------------- 
Id   int 
UserId  int 
LikeableId int 


Book 
----------------------- 
Id   int 
Name  nvarchar 
Author  nvarchar 
Description nvarchar 
AmazonUrl nvarchar 

: 나는 테이블 구조과 같이 있습니다. 쿼리의

결과 1 :

Name 
---------- 
Python 
C# 
Kotlin 

내가 원하는 무엇 : 이제

, 나는, 즉 책의 DISTINCT 결과 집합을 반환하고 싶습니다 도서 테이블의 모든 열 도서 이름 또는 도서 설명 con 쿼리 1의 결과 중 하나를 나타냅니다. 이것은 내 SQL 기술이 중단되는 곳입니다.

이 쿼리를 Java PreparedStatement에서 사용하고 싶습니다. 멋진 데이터 구조 나 저장 프로 시저가 아닌 일반 쿼리를 사용하는 것이 좋습니다. 그러면 위대 할 것입니다.

데이터베이스로 Microsoft SQL Server 2012를 사용하고 있습니다.

답변

2

JOIN으로이 작업을 수행 할 수 있습니다. . . 그러나 조건을 위해 LIKE 또는 CHARINDEX()를 사용하십시오 :

SELECT b.* 
FROM Book b JOIN 
    (SELECT Name 
     FROM [User] u JOIN 
      UserLike ul 
      ON u.Id = ul.UserId JOIN 
      Likeable l 
      ON l.Id = ul.LikeableId 
    ) n 
    ON b.title LIKE '%' + n.name + '%' OR 
     b.description LIKE '%' + n.name + '%'; 
관련 문제