0

私はこのコンテキストを持っています:

CREATE TABLE `atdees` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `params` text NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `atdees` (`id`, `params`) VALUES
(1,'{"field282":"0","field347":"1"}'),
(2,'{"field282":"0","field347":"0"}'),
(3,'{"field282":"0"}');

テーブルから次の行を抽出する必要があります。

  • atdee には文字列 '"field282":"0"' が必要です
  • atdee には文字列 '"field282":"0"' がありますが、文字列 '"field347":"0"' はありません
  • atdee には文字列 '"field282":"0"' と '"field347":"0"' の両方があります

つまり、ID 2 と 3 を抽出する必要があります。

ありがとうございました。

Ps: 私の英語で申し訳ありませんが、私はネイティブ スピーカーではありません ;)

編集:まあ、クエリを見つけました

SELECT id
FROM atdees
WHERE
  INSTR(`params`, '"field282":"0"') > 0 and
  ( params LIKE '%"field347":"0"%' OR 
    INSTR(`params`, '"field347"') = 0 )
4

1 に答える 1

0

データベースからデータを取得するだけの場合は、次のようなものを使用できます。

$db = JFactory::getDbo();

$query = $db->getQuery(true);

$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__atdees'));
$query->where($db->quoteName('params') . " = " . $db->quote('"field282":"0"') . "OR" . $db->quote('"field347":"0"'));

$db->setQuery($query);

$results = $db->loadObjectList();

foreach ( $results as $result ) {
    echo "<p>" . $result->id . "</p>";
}

データベース テーブルが Joomla 拡張機能用かどうかはわかりませんが、そうであれば、#__atdeesクエリのように保持し、そうでない場合は次のように変更しますatdees

お役に立てれば

于 2013-11-08T11:31:31.250 に答える