1

簡単なクエリがあります:

SELECT max(`id`) as `name_id` , LEFT(`name`,LENGTH(`name`)-2) AS `name`, `status` 
 FROM `users`
WHERE `site` = 1
  AND `category` = 'some'

そして、supp== YESのものだけを選択する必要があります

SELECT `model`.`supp`
  FROM `model`, `users`
 WHERE `users`.`name_id` = `name_id_from_the_first_query`
   AND `model`.`model_id` = `users`.`model_id`;

したがって、2 番目のクエリが現在の ID に対して YES を返す場合にのみ、最初のクエリの戻り値が必要です。

4

4 に答える 4

1

このクエリを試してください:

SELECT max(`id`) as `name_id` , LEFT(`name`, LENGTH(`name`)-2) AS `name`
       , `status` 
 FROM `users` 
     JOIN `model` 
       ON `model`.`model_id` = `users`.`model_id`
    WHERE `site` = 1 AND `category` = 'some'
      AND `model`.`supp` = 'YES';
于 2012-09-13T06:22:49.333 に答える
1

試す、

SELECT  max(a.`id`) as `name_id` , 
        LEFT(`name`,LENGTH(a.`name`)-2) AS `name`, 
        a.`status`
FROM    `model` a 
        INNER JOIN `users` b
            ON a.`model_id` = b.`model_id`
WHERE    a.`site` = 1 AND
         a.`category` = 'some' AND
         b.`supp` = 'YES'
GROUP BY a.`name`, a.`status`
于 2012-09-13T06:28:52.720 に答える
1

ここに別のオプションがあります:

SELECT max(`id`) as `name_id` , LEFT(`name`,LENGTH(`name`)-2) AS `name`, `status` 
 FROM `users`
WHERE `site` = 1
  AND `category` = 'some'
  AND id IN (SELECT `model_id`
               FROM `model`
              WHERE `supp` = 'YES'
             )
GROUP BY `name`, `status`;
于 2012-09-13T06:32:27.887 に答える
0
SELECT max(`id`) as `name_id` , LEFT(`name`, 
LENGTH(`name`)-2) AS `name`, `status` 
FROM `users` WHERE `site` = 1 AND `category` = 'some'
     and EXISTS
     ( 
       SELECT `model`.`supp` FROM `model` 
          WHERE `model`.`model_id` = `users`.`model_id`
                 and `model`.`supp`='Yes'
      ) 
于 2012-09-13T06:30:22.470 に答える