0

英語で申し訳ありませんが、私はオーストリア出身ですが、別の素敵なQ&Aボードを見つけることができませんでした。:)

私は非常に奇妙な構造化されたmysql-databaseを持っています。最初にユーザー用の表があります。私の例では、興味深い列は3つだけです。

id, name, email
  • 私の2番目のテーブルはイベントのテーブルです:id、name
  • 私の3番目のテーブルは、イベントのカテゴリテーブルです:id、name、eventID
  • 私の4番目のテーブルは、イベントのアンダーカテゴリテーブルです:id、name、catID
  • 私の5番目のテーブルは、イベントのタイムテーブルです:id、name、ucatID
  • 私の6番目のテーブルは、エントリが時間と人を組み合わせたテーブルです。

なんらかの形でその仕事の計画...

  1. ユーザー:ID、名前、メール
  2. イベント:id、name
  3. カテゴリ:id、name、eventID
  4. アンダーカテゴリ:id、name、catID
  5. underundercategories:id、name、ucatID
  6. 参加するテーブル:id、userID、uucatID

ええ、これまでのところ、すべてのエントリがあり(user-name, ucat-name, uucat-name)ます...しかし、参加テーブルにエントリがない人のリストを取得しようとしています!(ただし、eventIDが... 1 ^^と言う場合のみ)

エントリがあるリストのコードは次のとおりです。

SELECT a.*,b.name,c.name AS zeit,d.name AS kategorie
FROM intern_user AS b
INNER JOIN intern_dienstplan AS a ON a.userID=b.id
INNER JOIN intern_events_uucat AS c ON a.uucatID=c.id
INNER JOIN intern_events_ucat AS d ON c.ucatID=d.id
INNER JOIN intern_events_cat AS e ON d.catID=e.id
WHERE e.eventID='".$_POST['eventid']."'
ORDER BY b.name ASC

誰かが私を助けてくれることを願っています...私はすでに「a.idisnull」(join-tableにエントリがない)で何かを試しましたが、機能しません。

4

2 に答える 2

1

長い時間が経ちました...そして私は自分の問題の解決策を見つけました。:]

ここに、同じ問題を抱えている他の人のためのコードがあります...

SELECT *
FROM intern_user
WHERE 
(
    id NOT IN 
    (
            SELECT a.userID
        FROM intern_dienstplan AS a
        INNER JOIN intern_events_uucat AS b ON a.uucatID=b.id
        INNER JOIN intern_events_ucat as c ON b.ucatID=c.id
        INNER JOIN intern_events_cat AS d ON c.catID=d.id
                WHERE d.eventID='".$_POST['eventid']."'
        GROUP BY a.userID
        HAVING sum(b.wert) >= 100
    )
)
AND status='1'

すべての助けに感謝し、このたわごとを楽しんでください。:D

挨拶

于 2011-08-29T17:16:00.650 に答える
0

カテゴリ-サブカテゴリ-サブサブカテゴリの接続の種類は明確ではありません。イベント(0-1-N)を持つことができるサブカテゴリの数はどれくらいですか?

リンクテーブルで一致するレコードがない人を検索するだけの場合は、クエリを使用できます。

select a.*
from user a
left join link b on a.id = b.userId
where b.userId is null

また

select a.*
from user a
where id not in (select userId from link)

アップデート。上記の質問に対する答えはまだありません。あなたが試すことができます:

select *
from users
where id not in (
    select link.userId
    from event a
    inner join categories ...
    inner join subcategories ...
    inner join categories ...
    inner join link ...
    where a.eventId = ...)

左結合またはexists()を使用したバージョンに簡単に変換できます。

于 2011-08-17T10:05:18.430 に答える