簡體   English   中英

MYSQL:在一張表中搜索用戶ID以在其他2張表中搜索數據,然后顯示所有3張表中的數據

[英]MYSQL: Search for User ID in one table to search for data in 2 other tables, then show data from all 3 tables

我有一個包含類似於以下條目的數據庫...

users:
+-----+------+----------+---------+-------+
| UID | Name |  Addr    |  City   | State |
+-----+------+----------+---------+-------+
|   1 | John | 101 Main | Austin  | TX    |
|   2 | John | 101 Main | Houston | TX    |
|   3 | John | 101 Main | Del Rio | TX    |
|   4 | John | 101 Main | Houston | TX    |
+-----+------+----------+---------+-------+

verification:
+-----+---------------+--------------+
| UID | LicenseFirst3 | LicenseLast3 |
+-----+---------------+--------------+
|   1 |           554 |          122 |
|   2 |           556 |          345 |
|   3 |           555 |          382 |
|   4 |           555 |          108 |
+-----+---------------+--------------+

section_user_map:
+-----+-----------+---------------------+
| UID | SectionID |    CompleteDate     |
+-----+-----------+---------------------+
|   1 |        65 | 2012-05-12 05:05:15 |
|   2 |        72 | 2012-05-06 14:03:15 |
|   3 |        65 | 2012-05-09 16:13:15 |
|   4 |        72 | 2012-05-06 18:14:15 |
+-----+-----------+---------------------+

我需要能夠搜索在第 X 天中午和第 Y 天中午之間完成第 65 部分的學生。我還需要顯示學生的姓名、地址、城市、州和他們的許可證號碼的前三位和后三位。 我相信這將需要一個 left join 和 union 命令,但是制定起來有點太復雜了。

SELECT *
FROM   section_user_map
  JOIN users        USING (UID)
  JOIN verification USING (UID)
WHERE  SectionID = 65
   AND CompleteDate BETWEEN '2012-05-09 12:00:00'
                        AND '2012-05-11 12:00:00'

sqlfiddle查看

不需要UNION 僅當您仍希望為不存在於一個(或兩個) usersverification表中的users返回結果時,才需要外部聯接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM