SQL - 单个字段的多选

时间:2017-02-08 14:01:12

标签: mysql sql database

这是我的问题,

在数据库中,我有2个不同的表( field_data_field_company_ref 节点)。

在第一个中,我有两个不同的字段: entity_id field_company_ref_nid 。它们引用另一个表中的单个键( nid )。

我想要一个结果,显示两个第一个字段已经取 title 的值,这是第二个表中的一个字段,这要归功于 nid

使用此代码:

SELECT node.title as "Entity" ,node.title as 'Company ' 
  FROM `field_data_field_company_ref`,`node` 
  WHERE bundle = 'project' and (`entity_id` = node.nid 
    OR `field_company_ref_nid` = node.nid )

结果给了我重复的价值......

另一个代码:

SELECT node.title as "Entity" 
  FROM `field_data_field_company_ref`,`node` 
  WHERE bundle = 'project' and `entity_id` = node.nid 
UNION 
SELECT node.title as 'Company ' 
  FROM `field_data_field_company_ref`,`node` 
  WHERE bundle = 'project' and `field_company_ref_nid` = node.nid 

为我提供了唯一的专栏(实体

你能帮帮我吗?我喜欢这样的事情 enter image description here

2 个答案:

答案 0 :(得分:2)

您可以table2加入table1两次,如下所示:

select 
    b.title title1,
    c.title title2
from table1 a
join table2 b on a.entity_id = b.nid
join table2 c on a.field_company_ref_nid = c.nid;

答案 1 :(得分:0)

我假设你想要从保存文本标签的节点查找实体和公司的值。如果是这种情况,你需要这个。

Option Explicit

Dim id As String, i As String, j As Integer, flag As Boolean

Sub GetData()

If Not IsNumeric(UserForm1.TextBox1.Value) Then
  flag = False
  i = 0
  id = UserForm1.TextBox1.Value

  Do While Cells(i + 1, 1).Value <> ""
    If Cells(i + 1, 1).Value = id Then
      flag = True
      For j = 4 To 7
        UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
      Next j
    End If
    i = i + 1
  Loop

  If flag = False Then
    For j = 2 To 4
      '  UserForm1.Controls("TextBox" & j).Value = ""
    Next j
  End If

Else

End If

End Sub