[英]MYSQL join two tables
我有兩個表,其中一個包含不同類別的值的選擇,另一個“主”表通過第一個主鍵引用文本值。
表格1
CREATE TABLE IF NOT EXISTS `defaultvalues` (
`default_ID` int(11) NOT NULL AUTO_INCREMENT,
`columnName` varchar(100) NOT NULL,
`defaultValue` varchar(100) NOT NULL,
PRIMARY KEY (`default_ID`),
UNIQUE KEY `columnName` (`columnName`,`defaultValue`)
)
表2
CREATE TABLE IF NOT EXISTS `master` (
`master_ID` int(11) NOT NULL AUTO_INCREMENT,
`size` int(11) NOT NULL,
`madeby` int(11) NOT NULL,
`type` int(11) NOT NULL,
`colour` int(11) NOT NULL,
`notes` text NOT NULL,
`issueDate` datetime NOT NULL,
`ceMark` text NOT NULL,
`batchNumber` text NOT NULL,
主鍵( master_ID
)
每行的master.size是defaultvalues表中的P.key。
例如master.colour = 234,234 = defaultvalues.defaultValue ='red'
例如master.size = 345,345 = defaultvalues.defaultValue ='small'
現在,我想運行一個查詢,該查詢返回“主”表,該表的文本值由“默認值”構成,其顏色為顏色,大小,類型。 defaultValue”,並准備進行進一步處理。
我一直在嘗試子查詢和臨時表,但無法正常工作
當前系統依賴於PHP和多個查詢以及構建數組。
必須有一個更優雅的解決方案。
我希望這是有道理的。
任何提示或建議,不勝感激。
戴夫
您需要多次將主表連接到defaultvalues表。 像這樣:
SELECT m.*, d.defaultvalue as sizevalue, d2.defaultvalue as colorvalue...
FROM master m
JOIN defaultvalues d ON m.size = d.default_id
JOIN defaultvalues d2 ON m.color = d2.default_id
...
我到底做了什么...。雖然有效,但我仍然不高興。 一定有更好的東西...
選擇米*,
(SELECT defaultValue FROM默認值WHERE default_ID = m.colour)AS myColour,(SELECT defaultValue FROM默認值WHERE default_ID = m.size)AS mySize
從主機m那里m.master_ID = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.