如何在MYSQL中使用SELECT子查询而不是Views?

时间:2018-03-14 10:39:28

标签: mysql drupal-7

我有一个Drupal 7数据库,我需要从中提取有关节点类型“instruments”和“probe”之间关系的信息。我要找的结果是一个表,其中第一列是乐器标题,第二列是探测组标题,后跟探测标题,探测字幕,探测SKU等等。

所有探针和仪器都在具有2个节点参考表的特殊组节点中互连。一个用于仪器,一个用于探针。这两个表包含可以一起使用的相应探针和仪器的entity_id。所有标题和节点ID都可以在节点表中找到。

所以我想出了这个解决方案。首先,我创建了3个不同的视图:

   CREATE VIEW InstrumentTitel AS
        SELECT node.title AS InstrumentTitel ,
        field_data_field_koppla_instrument.entity_id 
        FROM node 
        INNER join field_data_field_koppla_instrument ON node.nid = field_data_field_koppla_instrument.field_koppla_instrument_nid;

    CREATE VIEW givareTitel2 AS
        SELECT 
        node.title AS GivareTitel ,
        field_data_field_koppla_givare.entity_id, 
        node.nid 
        FROM node 
        INNER join field_data_field_koppla_givare ON node.nid = field_data_field_koppla_givare.field_koppla_givare_nid;

    CREATE VIEW givargrupp_titel AS
        SELECT 
        node.title AS Givargrupp_Titel,
        field_data_field_koppla_givare.entity_id, 
        node.nid 
        FROM node 
        INNER join field_data_field_koppla_givare ON node.nid = field_data_field_koppla_givare.entity_id;

然后我在这个查询中使用这些视图并添加几个选择项(对于长表名称道歉):

SELECT DISTINCT 
instrumenttitel.InstrumentTitel, 
givargrupp_titel.Givargrupp_Titel, 
givaretitel2.givare_title, 
field_data_field_underrubrik_givare.field_underrubrik_givare_value, 
field_data_field_artikelnr_produkt.field_artikelnr_produkt_value, 
field_data_field_tekniska_data_givare.field_tekniska_data_givare_value 
FROM 
givaretitel2 
Left JOIN instrumenttitel ON givaretitel2.entity_id = instrumenttitel.entity_id 
Left JOIN givargrupp_titel ON givargrupp_titel.entity_id = instrumenttitel.entity_id 
Left JOIN field_data_field_underrubrik_givare ON field_data_field_underrubrik_givare.entity_id = givaretitel2.nid 
Left JOIN field_data_field_artikelnr_produkt ON field_data_field_artikelnr_produkt.entity_id = givaretitel2.nid 
Left JOIN field_data_field_tekniska_data_givare ON givaretitel2.nid = field_data_field_tekniska_data_givare.entity_id 
ORDER BY InstrumentTitel, givargrupp_titel, givare_title, field_underrubrik_givare_value, field_tekniska_data_givare_value

这很好用,但我需要在不使用视图的情况下获得相同的结果。所以我尝试使用子选择查询,我已经花了几个小时得到绝对无处...我不需要详细的wokring查询作为答案,只是在这种情况下提示如何使用子查询。

1 个答案:

答案 0 :(得分:1)

在MySQL JOIN中使用子查询:

SELECT a.id
FROM table1 a
INNER JOIN (SELECT id FROM table2) b ON (a.id = b.id)

只要您明确为该子查询提供别名,就可以有效地用子查询替换任何table引用。