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 ON 가입 :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]'하지만 난 몰라 알고 스트림 서버 (1과 15)에서 모든 값을 읽는 법을 배우는 법을 배우고 마녀를 추가하는 것은 그 두 사람의 애호가입니다.
많은 댓글을 삭제했기 때문에 삭제되었습니다. \t 'id', 'stream_id' 및'server_id' 열이있는'stream_server'라는 연결 테이블을 만드는 것이 좋습니다. 이것을보다 나은 최적의 JOIN 문을 작성할 수있는 방법으로 정규화라고합니다. 행운을 빕니다 –
나는 당신이 묘사 한 다른 방법으로 데이터를 정의 할 필요가 있음을 안다. 그러나 나는이 행과 테이블 구조를 내 시스템 전체에 연결했다. (편집 삭제는 비활성화를 활성화한다 ...) 그래서 나는 이것을 하나의 질의 또는 두 가지 쿼리 ... – John
JSON의 모든 유효한 항목에 대해 이것은 하나의 항목 또는 두 항목 또는 10 개의 항목이 될 수 있습니다. 별도의 LEFT JOIN이 필요합니다. 더 나은 해결책이 없습니다. –