0

わかりました、私はこのコードを持っています、私はエラーを持っていません....私は何も持っていません....何も現れません:

$idea = $bdd->query("SELECT * FROM ideas 
INNER JOIN follow ON ideas.idcreador=follow.idseguidor 
WHERE follow.idseguidor ='".$_SESSION['userid']."' ORDER BY id DESC");

while($datoideaperfil2 = $idea->fetch())
{
  echo $datoideaperfil2['ideas.idcreador'] <br />;
}

なにが問題ですか?SQL Joins を初めて使ってください...

ありがとう

4

3 に答える 3

1

SQL 自体に問題があるようには見えませんが、私が疑っていることの 1 つはid、両方のテーブルで呼び出された列があることです。エイリアスを使用しない場合、mysql は何を注文すればよいか分からず、エラーを返します。

これを試して:

SELECT 
    * 
FROM 
    ideas 
        INNER JOIN follow 
            ON ideas.idcreador=follow.idseguidor 
WHERE 
    follow.idseguidor ='".$_SESSION['userid']."' 
ORDER BY    
    follow.id DESC
于 2013-09-01T07:20:11.510 に答える
1

クエリの何が問題なのかを理解するには、SQL の結合がどのように機能するかを理解する必要があります。JOIN の結果、テーブル A のすべての行に対して、テーブル B のすべての行と結合された結果の行が得られる "テーブル" が生成されます。したがって、テーブル A に 5 行があり、テーブル B に 10 行がある場合、50 ( 5x10) 行で、WHERE 句でフィルタリングする必要があります。

結果も異なります。あなたの場合、これは重要な部分です.INNER JOINまたはOUTER JOINのどちらを使用しますか. INNER JOIN の結果の「テーブル」には、テーブル A とテーブル B の行が ON 句と一致する行のみが含まれます。したがって、テーブル アイデアにテーブル フォローのどの行とも関係のない行がある場合、その行は結果に表示されません。OUTER JOIN (LEFT または RIGHT OUTER JOIN) を選択すると、一致しない行が表示されますが、関係を見つけることができなかった値の行の値は NULL に設定されます。

INNER JOIN を選択したため、結果が得られないため、行間に関係がないと推測されます。

また重要なことは、ORDER BY 句を並べ替えるテーブルを指定するか、あいまいな列例外が発生することです (両方のテーブルに id という名前の列がある場合)。

于 2013-09-01T07:48:24.053 に答える
0

INNER JOIN両方のテーブルに対応する行がある場合にのみデータを表示する を使用しました。LEFTまたはRIGHT結合を使用してみてください。

于 2013-09-01T07:19:27.247 に答える