簡體   English   中英

MYSQL聯接兩個表

[英]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.

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