에서 얻는 데이터를 I가 데이터베이스에 다음과 같은 테이블 :MySQL은 쿼리를 조인 왼쪽 - 세 개의 테이블
표 post
:
+---------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------+------+-----+---------+----------------+
| post_id | int(11) | NO | PRI | NULL | auto_increment |
| post_content | varchar(50000) | NO | | NULL | |
| post_date | datetime | NO | | NULL | |
| post_summary | varchar(1000) | YES | | NULL | |
| post_title | varchar(300) | NO | | NULL | |
| post_visitors | int(11) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| category_id | int(11) | NO | MUL | NULL | |
+---------------+----------------+------+-----+---------+----------------+
표 user
:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| user_image | varchar(500) | YES | | NULL | |
| user_name | varchar(45) | NO | | NULL | |
| user_password | varchar(45) | NO | | NULL | |
| user_type | varchar(30) | NO | | NULL | |
| user_username | varchar(45) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
표 comment
:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| comment_id | int(11) | NO | PRI | NULL | auto_increment |
| comment_content | varchar(600) | NO | | NULL | |
| comment_date | datetime | NO | | NULL | |
| comment_title | varchar(300) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| post_id | int(11) | NO | MUL | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
내가 반환하는 쿼리를 필요 post_title
, post_summary
, post_date
, number_of_comments_for_this_post
(내림차순)으로 정렬 number_of_comments_for_this_post
, user_name
.
기본적으로 세 테이블의 데이터가 필요합니다. 나는 두 테이블을 결합하고 데이터를 얻는 방법을 안다. 예를 들어 :
SELECT p.post_title, p.post_summary, p.post_date, u.user_name
FROM post p LEFT JOIN user u ON p.user_id=u.user_id;
어떻게 세 번째 테이블 (코멘트)와 또 하나 개의 필드를 추가 가입하여이 쿼리를 확장하는 - '게시물의 수를 주석의 가장 처음 (내림차순) 게시물을 주석으로 정렬?
파다완에서는 USING()을 사용하지 마십시오. 더 큰 쿼리에서는 너무 혼란 스럽습니다. 성능 이점이 없습니다. – Strawberry
이것은 성능 이점이 아니라 단점도 아닙니다. 그리고 그것의 적은 코드는 사용자 u와 u.x = c.y와 같은 테이블 접두사를 읽음으로써 두통을 겪습니다. 나는 이것이 전혀 혼란스럽지 않다고 생각하지만 이것은 맛의 문제입니다! 어쨌든 큰 쿼리는 읽기 어렵습니다. USING() 또는 ON 문이 중요하지 않습니다. 새 줄을 사용하여 쿼리를 형식화하면 읽을 수있는 작업이 절반으로 줄어 듭니다. – Steini
@Steini 결과에 number_of_posts 주석 필드를 포함하지 않았고 해당 필드로 정렬하면 – Vladimir