Tag 관련 쿼리입니다.


* tags - TAG 이름만 있는 테이블

id  || name

1   ||  태그1

2   ||  태그2

3   ||  태그3


* bbs - 글 리스트

id  || title

1   || 어쩌고1

2   || 어쩌고2

3   || 어쩌고3

4   || 어쩌고4


* tag - bbs 매핑 테이블

id  || tag_id  || bbs_id

1   || 1  ||  1

2   || 2  ||  1

3   || 3  ||  2

4   || 1  ||  3



특정 태그를 검색할때 AND 조건으로 묶으려고 합니다. 예를 들어 태그1 이면서 태그2 인건 검색하면 글 id 1 인게 나오는 형태로요..

AND 조건이므로 태그를 붙여 검색할 수록 검색 결과가 점점 작아져야 합니다.

어렵네요 도와주세요~~ ㅠㅠ



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


CREATE TABLE Favorite_Stock (
    id INTEGER PRIMARY KEY,
    code varchar(255) NOT NULL,
    name varchar(255) NOT NULL,
    user_name varchar(255) NOT NULL,
    market varchar(255) NOT NULL
);

CREATE TABLE Tags (
    id INTEGER PRIMARY KEY,
    name varchar(255) NOT NULL
);

CREATE TABLE Favorites_tags (
    id INTEGER PRIMARY KEY,
    favorite INTEGER NOT NULL,
    tags INTEGER NOT NULL
);


INSERT INTO Favorite_Stock (code, name, user_name, market) values ("000660", "하이닉스", "eastvision", "0001");
INSERT INTO Favorite_Stock (code, name, user_name, market) values ("005930", "삼성전자", "eastvision", "0001");
INSERT INTO Favorite_Stock (code, name, user_name, market) values ("000020", "동화약품", "eastvision", "0001");

INSERT INTO Tags (name) values ("관심주");
INSERT INTO Tags (name) values ("약품");


INSERT INTO Favorites_tags (favorite, tags) values (1,1);
INSERT INTO Favorites_tags (favorite, tags) values (2,1);
INSERT INTO Favorites_tags (favorite, tags) values (3,1);
INSERT INTO Favorites_tags (favorite, tags) values (3,2);



죄송합니다. 다시 여쭤볼게요~

위와 같이 세개의 테이블이 있구요 하나는 태그 이름만, 하나는 종목이, 다른 하나는 이 둘을 엮는 테이블입니다.


SELECT
       favorite_stock.name, favorite_stock.code, favorite_stock.id
FROM favorite_stock
       JOIN favorites_tags ON favorite_stock.id = favorites_tags.favorite
       JOIN tags ON tags.id = favorites_tags.tags
where favorites_tags.tags=1;


이 세 테이블을 관심주라는 태그 명으로 검색하면 위와 같습니다. 이에 and 조건으로 관심주 이면서 약품 을 검색하려면 어케 해야하는건가요?? 태그를 검색할 수록 and로 붙어 검색 결과가 좁혀 져야합니다.

태그로 관심주와 약품을 동시에 가지고 있는 것은 "동화약품" 하나 이므로 이 하나만 검색이 되어야합니다.