0

私はそれが可能であることを願っています; SQL クエリ内で、2 番目のテーブルに切り替えます。特定の条件が満たされた場合、関連する行データを取得してから、前のクエリを完了し続けますか?

列== 1cms_navbarの場合、照会されてすべての行を引き戻すテーブルがあります。追加しようとしているのは、クエリが別のテーブルにジャンプすることです。が の列と等しい場合、==からすべての行を取得し、最後にテーブル内の残りの行を実行し続けます。visiblecms_navbar_preview$_GET['id_hash']hashcms_navbarcms_navbar_previewlive_hash$_GET['id_hash']cms_navbar

SELECT *
FROM cms_navbar
WHERE visible=1
AND parent=1
ORDER BY position ASC

これが私の主張を理解するのに苦労している場合は申し訳ありません。

CMS_NAVBAR テーブル:

id | title | link | visible | position | parent | child | relation | hash

CMS_NAVBAR_PREVIEW テーブル:

id | title | link | visible | position | parent | child | relation | live_hash | showcase_content
4

1 に答える 1

1

これを試して:

  SELECT 
  IFNULL(nbp.id,nb.id) as ID,
  IFNULL(nbp.title,nb.title) as TITLE,
  etc....

  FROM cms_navbar nb
  LEFT JOIN cms_navbar_preview nbp ON nbp.live_hash= <parameter> AND nb.id=nbp.id
    WHERE nb.visible=1
    AND nb.parent=1
    ORDER BY nb.position ASC

基本的に、あなたの条件でプレビューテーブルに参加します。一致するものが見つかったら、プレビュー テーブルからフィールドを取得します。そうでない場合 (つまり NULL)、navbar テーブルからフィールドを取得します。

これがあなたが達成しようとしていることを願っています...

于 2013-08-05T14:50:28.233 に答える