두 개의 테이블 module_config
과 module_settings
이 있습니다. 후자는 기본값이있는 행을 포함하고 전자는 기본값을 대체하는 행을 포함합니다.한 테이블의 여러 행이 다른 테이블의 한 행과 관련이있을 때 MySQL에 두 개의 테이블 조인
나는이 바이올린에 몇 가지 테스트 행이있는 테이블을 만들었습니다 : http://sqlfiddle.com/#!2/ad4eb. 내가 gid
의 목록을 제공 할
1) : 여기
내 사양입니다. 예를 들어100
,
24
,
48
,
50
을 입력합니다. 2) 각
gid
에 대한 각 설정 (
module_settings
에 주어진)에 대한 행을 반환하는 쿼리를 원합니다.
module_settings.gid_specific
이
0
인 모든
module_settings
행을 무시해야합니다. 3)
value
은 해당 행이있을 경우
module_config
에 주어진 해당 값과 같고, 그렇지 않은 경우 값은
module_settings
에 있습니다. 위의 바이올린으로
, 내가 (위의 4 개
gid
값의 입력) 다음 반환 할 수 있습니다 뭔가 싶습니다
gid_specific
동일입니다
| mid----- | gid | name-------- | value |
| currency | 100 | hand_default | 12--- |
| currency | 24- | hand_default | 17--- |
| currency | 48- | hand_default | 29--- |
| currency | 50- | hand_default | 0---- |
| currency | 100 | bank_default | 0---- |
| currency | 24- | bank_default | 0---- |
| currency | 48- | bank_default | 0---- |
| currency | 50- | bank_default | 0---- |
그래서를 먼저 module_settings
의 모든 행을 찾습니다 이 행은 mid
및 name
의 고유 한 조합을 가짐으로써 구별됩니다. 그런 다음 각 gid
에 대해 이러한 각 설정에 대한 행을 반환합니다. mid
이 currency
및 name
이 hand_default
동일 동일 module_setting
행에 대해, 그것은 4 행, 100
, 24
, 48
및 50
의 각 gid
하나를 반환합니다 그래서. 남은 유일한 일은이 행과 연결할 값을 결정하는 것입니다. module_config
에 행이 있고 module_settings.id
과 같고 module_config.gid
이 해당 행인 경우 module_config.value
으로 표시된 값을 사용하고, 그렇지 않으면 module_settings.initial
으로 지정된 기본값을 사용합니다.
알다시피, 나는 그것을 내 머리 속에 공식화했지만, 나는 이것을 쿼리 문에 넣는 것만으로는 머리를 쓸 수 없다. 누군가가 약간의 빛을 비출 수 있다면 나는 정말로 감사 할 것입니다.
'gid' ='50 '은 어디에서 왔을까요? –
PHP 코드에서'gid' 값의 배열이있을 것입니다 (이것은 db의 다른 테이블에서 가져온 것입니다). –
피들을보고 피클 테이블에서 산출물을 얻을 수 있는지 확인하십시오. –