0

数十のテーブルを持つリレーショナルMySQLデータベースがあります...クエリの長​​さは1000フィートで、ほぼすべてのテーブルからデータを選択します...'メイン'テーブルもあり、他のすべてのテーブルはそのテーブルを参照しています。メインテーブルに1つの行を入力し、他のテーブルにその行のすべてのリレーションを作成すると、クエリは正常に機能します。ただし、メインテーブルに1つの行を入力し、他の場所に何も入力しないと、空のセットが取得されます。しかし、少なくともその情報を私の結果に取り入れたいと思います。または、もちろん、一部のテーブルにそのレコード(行)の情報がないという事実に関係なく、他のテーブルに入力されるすべての情報...

手伝ってくれてありがとう!

アップデート:

JOIN構文を使用せず、クエリは次のようになります。

$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*";
$query .= " FROM a, b, c, d, e, f";
$query .= " WHERE a.aID = b.aID";
$query .= " AND b.bID = c.bID";
$query .= " AND b.bID = d.bID";
$query .= " AND b.bID = e.bID";
$query .= " AND b.bID = f.bID";
4

1 に答える 1

3

あなたの質問は今のところ非常に曖昧ですが、おそらくそれはあなたがINNER JOINsの代わりにsを使用しているという事実によるものですLEFT JOIN

このクエリ:

SELECT  *
FROM    main
JOIN    secondary
ON      secondary.main_id = main.id

secondary空の場合は何も返しません。

このクエリ:

SELECT  *
FROM    main
LEFT JOIN
        secondary
ON      secondary.main_id = main.id

のレコードごとに少なくとも1つのレコードを返し、に一致するレコードがない場合はmain、セカンダリフィールドをsに置き換えます。NULLsecondary

アップデート:

使用する暗黙JOINの構文(テーブルを列挙し、句にJOIN条件を指定する)は、 sを前提としています。WHEREINNER JOIN

それが「メイン」テーブルであると仮定してa、クエリを次のように書き直します。

SELECT  a.*, b.*, c.*, d.*, e.*, f.*
FROM    a
LEFT JOIN
        b
ON      b.aID = a.aID
LEFT JOIN
        с
ON      c.bID = b.bID
LEFT JOIN
        d
ON      d.bID = b.bID
LEFT JOIN
        e
ON      e.bID = b.bID
LEFT JOIN
        f
ON      f.bID = b.bID
于 2009-11-10T16:39:12.157 に答える