1

こんにちは私は新しいCLAUSEを追加するのに助けが必要です、これは私にとってかなり進んでいて、私はそれを理解することができません。//ect.author_idクエリを使用してexp_channel_titlesテーブルのauthor_id列を作成し、それらの行をスキャンして最終結果を取得します。IF ect.status ='Members-id5' AND ect.status ='complete' ...で決定するには、ect.entry_idにMembers-id5の行を使用します。私の質問はどうすればいいですか?新しいCLAUSEまたはクエリが実行されると想定する場所にマークを付けましたが、間違っている可能性があります。

私の問題は、最大5つの異なるect.entry_idがあるため、ステータス= Members_id5の行にあるものを分離しようとしていますが、ステータス=完了も存在する場合に限ります。これは、PHPで配列の考えを使ってやらなければならないことのように思えますか?

    SELECT
             ect.entry_id
        ,    ect.author_id
        ,    ect.title
        ,    ect.status
        ,    ecd.field_id_13
        ,    ecd.field_id_14
        ,    ecd.field_id_15
        ,    ecd.field_id_25
        ,    ecd.field_id_27
        ,    ecd.field_id_28
        ,    ecd.field_id_29
        ,    ecd.field_id_30
        ,    ecd.field_id_31
        ,    ecd.field_id_32
        ,    ecd.field_id_33
        ,    ecd.field_id_34
        ,    ecd.field_id_35
        ,    exm.email
    FROM exp_channel_titles as ect
    LEFT JOIN exp_channel_data as ecd
      ON ecd.entry_id = ect.entry_id
    LEFT JOIN exp_members as exm
      ON exm.member_id = ect.author_id

// new CLAUSE

    WHERE ect.title LIKE '%Member%'
    AND ect.status = 'Members-id5'
4

2 に答える 2

2

私があなたの問題を正しく理解していればexp_channel_titles、status = "Members-id5" であるが、author_id に対してステータスが "Complete" である別のレコードが存在するレコードのみを返したいと考えています。

私がその権利を持っている場合は、もう一度テーブルに参加するだけでよいと思います (LEFT (outer) JOIN ではなく、INNER JOIN)。

JOIN exp_channel_titles as ect_status ON ect.author_id = ect_status.author_id AND ect.status = 'complete'

既存のクエリに追加されたその句はexp_channel_titles、ステータスが「Members-id5」であるが、ステータスが「完了」である一致するレコードを持つレコードのみを返す必要があります。

于 2012-05-08T21:53:01.163 に答える
1

あなたのコメントに基づいて、 ect.status = "Members-id5" のレコードと ect.status = "complete" のレコードを持つ個人を見つけたいようです。次に、SELECT クエリをそれらの個人にのみ適用する必要があります。これは、WHERE 句内で 2 つのサブクエリを使用して行うことができます。このようなもの:

WHERE ect.title LIKE '%Member%'
AND ect.author_id IN 
     (select author_id from exp_channel_titles where ect.status = "Members-id5")
AND ect.author_id IN
     (select author_id from exp_channel_titles where ect.status = "complete")

最初のサブクエリは、「Members-id5」を含むレコードが少なくとも 1 つあるすべての作成者 ID のリストを生成し、IN 句は、現在検討中の作成者 ID がそれらの 1 つであるかどうかを確認します。2 つ目は、"complete" のレコードを持つすべての著者 ID のリストで同じことを行います。両方の条件が true の場合、それは個人がレコードを返す必要があることを意味します。

私はあなたのデータ構造に精通していないので、これはあなたが必要とする正確なコードではないかもしれません (特に、ect.author_id は実際には比較するフィールドではないかもしれません)。

于 2012-05-08T21:32:05.337 に答える