私は2つのテーブルを持っています。1 つのテーブルは場所情報を示し、別のテーブルはその場所の wifi ssid とパスワードを示します。これらのテーブルは、列「LocationID」によって結合されています。2 つの別々のテーブルの理由は、特定の場所の ssid とパスワードの履歴を保持できるようにするためです。
私のクエリは次のとおりです。
SELECT Location.LocationID,
Location.SystemName,
Location.SiteNameLocation,
Location.SiteAddress1,
Location.SiteAddress2,
Location.SiteCity,
Location.SiteProvince,
Location.SitePostalCode,
Location.ContactName,
Location.ContactPhone,
Location.ContactEmail,
Location.ID1POC,
Location.ID2District,
Location.SiteLocationHours,
LocationWiFi.WiFiSSID,
LocationWiFi.WiFiPassphrase,
LocationWiFi.WiFiDate
FROM Location
LEFT JOIN LocationWiFi ON LocationWiFi.LocationID = Location.LocationID
私がする必要があるのは、テーブルから最新のwifi ssidとパスフレーズを取得して、対応するlocationIDで表示することです
次のクエリでそれを行うことができます:
SELECT * FROM LocationWiFi WHERE WiFiDate = (SELECT MAX(WiFiDate) FROM LocationWiFi) AND LocationID = xxxx
それほど難しいことではないと確信しています。私はそれを完全に理解することはできません。助けてくれてありがとう!
編集...
混乱させてすみません。もっとはっきりさせてください。ロケーション テーブルに 1500 以上のエントリがあります。同じロケーション ID を持つ LocationWiFi テーブルの 2 つのエントリ。1500 行以上をすべて返すには、最初のクエリ (結合を含むクエリ) が必要ですが、wifi ssid とパスワードを最大日付でプルするだけです。wifi ssid とパスフレーズがない場所については、null 値で列を表示したいだけです。
改めてお詫び申し上げます
解決
皆さんこんにちは、
私はこの問題を解決しました。同様の解決策を持っている人にとっては、これが私にとってうまくいったものです。
SELECT Location.LocationID,
Location.SystemName,
Location.SiteNameLocation,
Location.SiteAddress1,
Location.SiteAddress2,
Location.SiteCity,
Location.SiteProvince,
Location.SitePostalCode,
Location.ContactName,
Location.ContactPhone,
Location.ContactEmail,
Location.ID1POC,
Location.ID2District,
Location.SiteLocationHours,
a.WiFiSSID,
a.WiFiPassphrase
FROM Location
LEFT JOIN(
SELECT LocationWiFi.WiFiSSID,
LocationWiFi.WiFiPassphrase,
LocationWiFi.LocationID
FROM LocationWiFi
WHERE LocationWiFi.WiFiDate = (SELECT MAX(WiFiDate) FROM LocationWiFi)
) AS a
ON a.LocationID = Location.LocationID;