sql >> データベース >  >> RDS >> Mysql

1対多の関係を持つテーブルを1行のレコードに結合する方法

    秘訣は、2つの異なるエイリアスを使用してtbl_equipwarrantyに2回参加することです。 1つはサービス保証用で、もう1つは製品保証用です。これを行うには、結合の一部としてサービスタイプを指定します。以下はANSI結合を使用しているため、firebirdとmysqlで機能する可能性があります。

    SELECT
        a.equipmentid,
        a.codename,
        a.name,
        a.labelid,
        a.ACQUISITIONDATE,
        a.description,
        a.partofid,
        w1.warrantyid as serviceidwarranty, 
        w1.startdate, 
        w1.enddate,
        w2.warrantyid as productidwarranty, 
        w2.startdate, 
        w2.enddate
    FROM TBL_EQUIPMENTMST a 
    INNER JOIN tbl_equipwarranty w1 
        ON w1.equipmentid = a.equipmentid AND w1.servicetype = 'service'
    INNER JOIN tbl_equipwarranty w2 
        ON w2.equipmentid = a.equipmentid AND w2.servicetype = 'Product'
    WHERE
    a.partofid = '57'
    


    1. テーブル'mysql.user'は存在しません:ERROR

    2. MYSQLは最後の3行を選択し、ASCで並べ替えます

    3. リレーション内の別の属性の値に基づいて複数のタプルの属性を比較するSQLクエリ

    4. io.vertx.mysqlclient.MySQLPool.query().executeが実際に実行されることはなく、何も返されません