Streams:
+----+-----------+
| id | server |
+----+-----------+
| 1 | ["1","15"]|
+----+-----------+
Servers:
+----+-------------------+------------------+
| id | server | download |
+----+-------------------+------------------+
| 1 | Server #1 | 2.05 |
| 2 | Server #2 | 23.96 |
| 3 | Server #3 | 8.08 |
| 15 | Server #15 | 3.03 |
+----+-------------------+------------------+
を取得するためにJSONでJOIN:MySQLのLEFT、私は結果のためにこれを取得する必要がある値に
+----+-----------+--------------+
| id | server | download |
+----+-----------+--------------+
| 1 | Server #1 | 2.05 |
+----+-----------+--------------+
だから基本的に私はストリームテーブルサーバフィールドから取得する必要があるとそのフィールドは、サーバテーブルから読み出すために必要なものサーバーは上記のreultテーブルのようにダウンロードが少なく、そのサーバーを返します。
SELECT servers.server FROM servers
LEFT JOIN streams ON servers.id=CAST(json_extract(streams.server, '$[0]') AS
UNSIGNED)
WHERE streams.id=1;
だから、私はその後、恋人のダウンロードを持っているもの比較できるように...私が知っている問題は、「$ [0]」ですが、私は知らない...結果ではない2からの最初のサーバーのみを取得しますどのようにストリームサーバー(1と15)からすべての値を読み取るし、魔女を追加するには、その2つの恋人です...私は何が欠けている?
多くのコメントが削除されています。 \t 'stream_server'という名前の' id'、 'stream_id'、' server_id'という名前の接続テーブルを作成することをお勧めします。これは、より良い最適なJOIN文を書くことができるように正規化と呼ばれています。幸運 –
私はあなたが説明した方法以外の方法でデータを定義する必要があることを知っています。しかし、この行とテーブル構造を私のシステム全体に接続しています(編集の削除を追加すると無効になります...) 2つのクエリ... – John
これはJSONのすべての有効な項目に対して、これは1つの項目か2つの項目か10個の項目に分けることができますLEFT JOINより良い解決策はありません –