0

私はこの問題を抱えています、

次のようにクエリを使用します。

    mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT
    COUNT(*) FROM mytableB as d WHERE d.samefield=samefield)");

間違った結果が返されます。機能する理想は次のとおりです。

    mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT
    COUNT(*) FROM mytableB as d WHERE d.samefield=mytable.samefield)");

正確なルックアップを認識し、データベースから正しい結果を取得するために、mytableの名前を明示的に入力する必要があることに注意してください。これは、d.samefieldが等しいことを決定するための最も外側の親クエリとして使用する決定的なワイルドカードです。エイリアスを知らずに最初の親に対して、d.samefield = thewildcard.samefieldは私が探しているものであり、何らかの方法でその親を検索するように指定します。

d.samefield = samefieldを使用すると、親の値に固執しないため、同じ名前のフィールド、テーブルaでのクエリ、テーブルbでのサブクエリの両方が問題であると思われるため、これが機能した場合に最も簡単でした。サブクエリで常にエイリアスを宣言し、最初の親クエリフィールドをmysqlが検索するフィールドにする必要がありますが、この方法では機能しないようです。

質問全体がちょっとばかげているように聞こえますが、これを3時間行って、サブクエリをメインに追加したいテーブル名を送信するphp関数などのメソッドを試したので重要です。クエリを実行し、phpの評価も試しましたが、これに対する答えが必要なコンテキストでは、すべてが非常に複雑なソリューションになります。

4

1 に答える 1

1

両方のテーブルに別名を付けてみませんか?

SELECT a.* FROM mytable a WHERE a.samefield='2' AND
(SELECT COUNT(*) FROM mytableB b WHERE b.samefield=a.samefield);
于 2013-01-07T07:14:37.397 に答える