complex (atleast i think it is complex)
試合日程やイベント関連から選手を探す条件はこちら。
これで、複数のイベントに複数の競合他社のユーザー エントリが含まれるテーブルとのHTBTM
関係ができました。events_competitors
ここでは、joins
入会・交際の条件はこれでOKですが、 (黒帯チェック)と(成人チェック)の追加条件もevents
つけcompetitors
ていきたいです。is_black
is_adult
'EventCompetitor.is_black' => 0,
'EventCompetitor.is_adult' => 0,
ここでは、両方の条件 (is_black / is_adult) 0 を持つ競合他社のみが必要であり、資格がないことを意味しますが、同じ条件を適用しないため、競合他社の結果が間違っています。
以下は私の検索条件全体です:
$matchdivisions = $this->Competitor->find("all" ,
array(
'conditions' =>
array(
'Competitor.status' => 1,
'Competitor.payment_completed' => 1,
'Competitor.weightgroup_id' => $current_matchsc['Matchschedule']['weightgroup_id'],
'Competitor.rank_id' => $current_matchsc['Matchschedule']['rank_id'],
'Competitor.degree_id' => $current_matchsc['Matchschedule']['degree_id'],
'Competitor.gender' => $current_matchsc['Matchschedule']['gender'],
),
'joins' =>
array(
array(
'table' => 'event_competitors',
'alias' => 'EventCompetitor',
'type' => 'left',
'conditions'=> array(
"AND" =>array(
'EventCompetitor.event_id = '.$current_matchsc['Event']['id'],
'EventCompetitor.is_black' => 0,
'EventCompetitor.is_adult' => 0,
)
),
)
),
'group' => 'Competitor.id'
)
);
任意のアイデア、どうすればそれらをJOIN
条件に適用できるので、結果に適用されます。
ありがとう !
以下は、参照用の SQL ダンプです。
選択しCompetitor
ます。id
、Competitor
。first_name
、Competitor
。last_name
、Competitor
。parent_name
、Competitor
。gender
、Competitor
。date_of_birth
、Competitor
。email_address
、Competitor
。weight
、Competitor
。weightgroup_id
、Competitor
。height
、Competitor
。rank_id
、Competitor
。degree_id
、Competitor
。photo
、Competitor
。school_id
、Competitor
。years_of_experience
、Competitor
。age
、Competitor
。tournament_id
、Competitor
。total_registration_fees
、Competitor
。address1
、Competitor
。address2
、Competitor
。city
、Competitor
。zip_code
、Competitor
。country_id
、Competitor
。state_id
、Competitor
。phone_number
、Competitor
。mobile_number
、Competitor
。payment_mode
、Competitor
。email_sent
、Competitor
。payment_completed
、Competitor
。status
、Competitor
。created
、Competitor
。modified
、Rank
。id
、Rank
。name
、Rank
。status
、Rank
。created
、Rank
。modified
、Tournament
。id
、Tournament
。tournament_name
、Tournament
。tournament_type
、Tournament
。tournament_date
、Tournament
。venue_name
、Tournament
。address1
、Tournament
。address2
、Tournament
。city
、Tournament
。zip_code
、Tournament
。country_id
、Tournament
。state_id
、Tournament
。created
、Tournament
。modified
、Country
。id
、Country
。name
、Country
。status
、Country
。created
、Country
。modified
、State
。id
、State
。country_id
、State
。name
、State
. short_name
、State
。status
、State
。created
、State
。modified
、Degree
。id
、Degree
。rank_id
、Degree
。name
、Degree
。status
、Degree
。created
、School
。id
、School
。name
、School
。address1
、School
。address2
、School
。city
、School
。zip_code
、School
。country_id
、School
。state_id
、School
。phone_number
、School
。owner_name
、School
。establishment_date
、School
。total_competitors
、School
。status
、School
。created
、School
。modified
、Transaction
。id
、Transaction
。competitor_id
、Transaction
。noncompetitor_id
、Transaction
。created
、Transaction
。modified
、Transaction
。mc_gross
、Transaction
。address_status
、Transaction
。payer_id
、Transaction
。address_street
、Transaction
。payment_date
、Transaction
。payment_status
、Transaction
。address_zip
、Transaction
。first_name
、Transaction
。address_country_code
、Transaction
。address_name
、Transaction
。custom
、Transaction
。payer_status
、Transaction
。address_country
、Transaction
。address_city
、Transaction
。payer_email
、Transaction
。verify_sign
、Transaction
。txn_id
、Transaction
。payment_type
、Transaction
。last_name
、Transaction
。address_state
、Transaction
。receiver_email
、Transaction
。item_name
、Transaction
。mc_currency
、Transaction
。item_number
、Transaction
。residence_country
、Transaction
。transaction_subject
、Transaction
。payment_gross
、Transaction
。shipping
、Transaction
。test_ipn
、Transaction
。pending_reason
からcompetitors
AS Competitor
left JOIN event_competitors AS EventCompetitor
ON ( EventCompetitor
. event_id
= 3 AND EventCompetitor
. is_black
= 0 AND EventCompetitor
. is_adult
= 0) LEFT JOIN ranks
AS Rank
ON ( Competitor
. rank_id
= Rank
. id
) LEFT JOIN tournaments
AS Tournament
ON ( Competitor
. tournament_id
= Tournament
. id
) LEFT JOIN countries
AS Country
ON ( Competitor
. country_id
= Country
. id
) LEFT JOIN states
AS State
ON ( Competitor
. state_id
= State
. id
) LEFT JOIN degrees
AS Degree
ON ( Competitor
. degree_id
= Degree
. id
) LEFT JOIN schools
AS ON ( . = .) LEFT JOIN AS ON ( . = . ) LEFT JOIN AS ON ( . = . ) LEFT JOIN AS ON School
( Competitor
. school_id
= School
. id
)transactions
Transaction
Transaction
. competitor_id
= Competitor
. id
)どこCompetitor
で。status
= 1 AND Competitor
. payment_completed
= 1 AND Competitor
. weightgroup_id
= 13 およびCompetitor
. rank_id
= 11 およびCompetitor
. degree_id
= '0' AND Competitor
. gender
= '女性' GROUP BY Competitor
.id
上記の ref クエリの左結合条件は次のとおりです。
left JOIN event_competitors AS EventCompetitor ON (EventCompetitor.event_id = 3 AND EventCompetitor.is_black = 0 AND EventCompetitor.is_adult = 0)