多个查询:多变量或一个查询

时间:2011-05-24 12:34:02

标签: php mysql

我在php(主要是第一个长查询)中编写所有这些内容时有很多帮助。

// Query the database for data
$query = "SELECT cards.card_id, concat(title, \" By Amy\") AS TitleConcat, 
    description, meta_description, 
    seo_keywords,concat(\"http://www.amyadele.com/attachments//cards/\",cards.card_id,\"/\",card_image) AS ImageConcat,price 
FROM cards, card_cheapest 
WHERE cards.card_id = card_cheapest.card_id 
ORDER BY card_id";


$result = mysql_query($query);


// Open file for writing
$myFile = "googleproducts.txt";
$fh = fopen($myFile, 'w') or die("can't open file");

// Loop through returned data and write (append) directly to file
fprintf($fh, "%-25s %-200s  %-800s   %-200s %-800s %-800s\n", "id", "label","description","price","image","seo keywords");
fprintf($fh, "\n");
while ($row = mysql_fetch_assoc($result)) {
 fprintf($fh, "%-25s  %-200s  %-800s  %-200s %-800s %-800s\n", $row['card_id'], $row['TitleConcat'], $row['description'],$row['price'],$row['ImageConcat'], $row['seo_keywords']);
}

// Close out the file
fclose($fh);

echo "The file has been written sucessfully to googleproducts.txt. It will run again tomorrow at 12:00pm."
?>

然而,在过去的几天里,我写了几个其他问题,这些问题引导我提出问题。是否更容易将其他查询粘贴到第一个“选择”中,或者更容易设置多个查询然后只是将其插入行中(我甚至不知道这是否可能)。< / p>

查询:选择最低价格

select card_id, min(card_price) from card_lookup_values where card_price > 0 group by card_id;

查询:创建网址结构

SELECT CONCAT('http://amyadele.com/', cards.title, '/', categories.seoname, '/', cards.seoname),cards.card_id
FROM cards
LEFT JOIN card_categories
  ON card_categories.card_id = cards.card_id
LEFT JOIN categories
  ON card_categories.category_id = categories.category_id ORDER by card_id;

我想我的问题是最好将我的查询(我已经知道工作)设置为多个变量然后以某种方式将其推送到我设置的表格格式,或以某种方式将所有这些查询格式化为一个长查询?

我最近写过

 SELECT 
            replace(lower(concat( 'http://www.amyadele.com/', pcat.seoname,'/',cat.seoname, '/', cards.seoname, '.htm' )),' ','+') AS link,
            concat(pcat.name,'>',cat.name) as category,
            replace(lower(concat( 'http://www.amyadele.com/', cat.seoname, '/', cards.seoname, '.htm' )),' ','+') AS add_to_cart_link          
          FROM cards 
          INNER JOIN card_categories cc ON cards.card_id = cc.card_id AND cards.card_live = 'y' AND cards.active = 'y' AND cc.active = 'Y'
          INNER JOIN categories cat ON cat.category_id = cc.category_id AND cat.active = 'Y'
          INNER JOIN categories pcat ON cat.parent_category_id = pcat.category_id
          INNER JOIN card_lookup_values clv on clv.card_id=cards.card_id and clv.lookup_detail_id
          WHERE cat.parent_category_id <>0
          ORDER BY cc.card_id 

然而,我真的很困惑如何立即添加这个

1 个答案:

答案 0 :(得分:1)

您可以使用“联接”将所有这些信息聚合到来自数据库的单个响应中。我不知道你的确切架构,所以其中一些只是一个猜测,但这是我将如何开始。

SELECT 
  cards.card_id, 
  concat(cards.title, ' By Amy') AS TitleConcat, 
  cards.description, 
  cards.meta_description,
  cards.seo_keywords,
  concat('http://www.amyadele.com/attachments//cards/',cards.card_id,'/',cards.card_image) AS ImageConcat,
  card_cheapest.price,
  card_import.author,
  min(card_lookup_values.card_price)
FROM
  cards
  join card_cheapest on cards.card_id = card_cheapest.card_id
  left join card_import on card_import.card_id = cards.card_id
  join card_lookup_values on card_lookup_values.card_id = cards.card_id
WHERE card_lookup_values.card_price > 0
GROUP BY
  cards.card_id
ORDER BY
  cards.card_id