Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak połączyć tabele z relacjami od 1 do wielu w 1 wiersz rekordu

Sekret polega na dwukrotnym dołączeniu na tbl_equipwarranty - przy użyciu 2 różnych aliasów. Jeden na gwarancję serwisową i jeden na gwarancję na produkt. Możesz to zrobić, określając typ usługi jako część sprzężenia. Poniższe używa złączeń ANSI, więc prawdopodobnie zadziała w firebird i 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wiosna jpa application.properties useSSL

  2. c3p0 mówi - java.lang.Wyjątek:TYLKO DEBUGOWANIE:Zaległy ślad stosu pobierania zasobów podczas uruchamiania transakcji hibernacji

  3. Pobierz wszystkie wiersze na podstawie zapytania do tablicy

  4. Jak usunąć ostatni rekord (pod warunkiem) z tabeli w MySql

  5. Błąd krytyczny PHP:Niezłapany wyjątek PDO:nie można znaleźć sterownika