0

3つのテーブルがあり、それらに対して結合ステートメントを実行しようとしています。

SELECT node.title, field_data_body.body_summary, 
  url_alias.alias 
FROM node, field_data_body, url_alias 
WHERE node.nid = field_data_body.entity_id 
 AND node.nid = ".node/".url_alias.source 
 AND field_data_body.bundle='article'

上記の行は、 "node.nid =" .node / "。url_alias.source"のために機能しません。これは、呼び出しを行う正しい方法ではありません。

ノードテーブルのnid列をurl_aliasテーブルのソース列と比較しようとしています。ソース列のデータは「node/21」<-として表示されます。「node/」文字列が邪魔になっている場合、どうすれば会社を作成できますか?

4

2 に答える 2

0

REPLACE または LIKE または REGEX を使用できます。

これは REPLACE を使用します。

SELECT node.title, field_data_body.body_summary, url_alias.alias 
FROM node, field_data_body, url_alias 
WHERE node.nid = field_data_body.entity_id 
   AND node.nid = REPLACE(url_alias.source, '.node/', '')
   AND field_data_body.bundle='article'

- 編集

または @datasage が正しく指摘しているように、CONCAT も機能しますが、一重引用符を使用する必要があると思います。

幸運を。

于 2013-01-30T15:28:01.413 に答える
0

関数を使用したいようですCONCAT()

SELECT node.title, field_data_body.body_summary, 
  url_alias.alias 
FROM node, field_data_body, url_alias 
WHERE node.nid = field_data_body.entity_id 
 AND node.nid = Concat('.node/.', url_alias.source)
 AND field_data_body.bundle='article'

JOIN構文を使用するようにクエリを変更することにも参加します。

SELECT node.title, field_data_body.body_summary, 
  url_alias.alias 
FROM node
INNER JOIN field_data_body
    on node.nid = field_data_body.entity_id 
INNER JOIN url_alias 
    ON node.nid = Concat('.node/.', url_alias.source)
WHERE field_data_body.bundle='article'
于 2013-01-30T15:28:05.203 に答える