MySQL은 "table_a"이 3 개의 테이블을 어떻게 가입시킬 수 있습니까?
+----+-------+
| id | title |
+----+-------+
가 지금은 검색과 같이 할 수는 :
$term = mysql_real_escape_string($_GET['term']);
mysql_query("SELECT * FROM `table_a`
WHERE MATCH(`title`) AGAINST('$term' IN BOOLEAN MODE) LIMIT 0,5");
그러나 나는 다른 compontent을 추가 할 수 있습니다.
MySQL은 "table_b"
+----+----------+
| id | category |
+----+----------+
MySQL은 "table_c"그래서
+------------+------------+
| table_a_id | table_b_id |
+------------+------------+
, 나는 table_a 따라 연결되어 table_b의 특정 category
에 대한보고 싶어요 ~ table_c.
하지만, 그것은 항상 category
가 table_a에 연결되어있는 경우가 아니라 (그래서 그냥 table_a에 연결되어 table_c의 모든 항목이없는 경우가 발생할 수있다).
및, 나도 table_a에 title
에 대한 검색 할 수있는 category
연결 table_a 에있는 경우 또는 category
table_b (그래서 모두가 가능해야한다에, 그래서 category
shouldn title
또는 그 반대 방향). 그러나 이것이 가능하지 않다면 title
은 category
을 덮어 씁니다. 여기
A)는 그냥
$term = mysql_real_escape_string($_GET['term']);
mysql_query("SELECT a.*, LEFT JOIN (SELECT c.table_a_id FROM table_b AS b
, table_c AS c WHERE b.category = '$term' AND b.id = c.table_b_id)
AS d ON d.table_a_id = a.id FROM table_a AS a
WHERE MATCH(a.title) AGAINST('$term' IN BOOLEAN MODE) LIMIT 0,5");
을 설명했던대로 그것은 title OR category
를 포함하지 않는다) B를 작동하지 않는 것입니다
도움이 되었다면 크게 감사하겠습니다.
PHP 코드를 읽지 않아도됩니다 :'$ _GET [term]'을 이스케이프해야합니다. 이렇게 사용하지 마십시오. – Till
@Till 난 그냥 위의 코드에 포함되지 않았습니다. 하지만 고마워;) 내 질문을 업데이 트됩니다. –
여러 범주를 제목에 적용 할 수 있습니까? –