0

次の行でテーブルを設定しています。

orderfrom                               | Name
-------------------------------------------------------
ClearVision, Oakley, I-Deal Optics      | ClearVision
ClearVision                             | I-Deal Optics
ClearVision                             | Oakley

「orderfrom」列に「Name」の値が見つからない行を選択するクエリが必要ですこの場合、2行目と3行目は返されますが、最初の行は返されません( "ClearVision"はorderfrom列にあるため)。

これが私が試したことです:

SELECT * FROM `dist`
    JOIN `patientacct`
        ON `patientacct`.dist LIKE CONCAT('%', `dist`.name ,'%')
    INNER JOIN `treasure`
        ON `treasure`.`id` = `patientacct`.`id`
        WHERE (status = 'To Order' AND ****** ORDER BY `name` ASC);

**の部分は私が助けを必要としているところです。私はこれを試しました:

(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')) ))
4

2 に答える 2

0

よくわかりませんが、これほど単純なコードでうまくいくのではないでしょうか。

mysql> select * from stringComp;
+------------------------------------+---------------+
| value1                             | value2        |
+------------------------------------+---------------+
| ClearVision, Oakley, I-Deal Optics | ClearVision
  |
| ClearVision                        | I-Deal Optics |
| ClearVision                        | Oakley        |
| ClearVision, Oakley, I-Deal Optics | ClearVision   |
+------------------------------------+---------------+
4 rows in set (0.00 sec)

行1の値2には、その周りに余分な空白があることに注意してください。

mysql> select * from stringComp where value1 not like concat('%',value2,'%');
+------------------------------------+---------------+
| value1                             | value2        |
+------------------------------------+---------------+
| ClearVision, Oakley, I-Deal Optics | ClearVision
  |
| ClearVision                        | I-Deal Optics |
| ClearVision                        | Oakley        |
+------------------------------------+---------------+
3 rows in set (0.00 sec)

この単純なSQLは、列value2の内容を比較して、それらが列value1にあるかどうかを確認し、そうでない行を返します。

したがって、あなたの質問に答えるために、where句のこの小さなスニペットは正しい結果をもたらすと思います:value1はconcat('%'、value2、'%')のようではありません

編集:クエリに余分な行が表示されました:に余分な角かっこがあると思います

(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')) ))

する必要があります:

(( `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')))

編集2:どうしてそこにすべての角かっこがあるのですか?

SELECT 
    * 
FROM 
    `dist`
    JOIN `patientacct`
        ON `patientacct`.dist LIKE CONCAT('%', `dist`.name ,'%')
    INNER JOIN `treasure`
        ON `treasure`.`id` = `patientacct`.`id`
WHERE 
    status = 'To Order' 
    AND `dist`.name NOT LIKE CONCAT('%',`patientacct`.orderfrom,'%')
ORDER BY
    `name` ASC;
于 2012-06-27T06:03:29.837 に答える
0

内部結合treasure オンtreasureid= patientacctid WHERE status='注文する' AND.name distNOT LIKE CONCAT('%' patientacct、.orderfrom、'%')

于 2012-07-18T22:47:38.197 に答える