2010-08-10 2 views
0

Мой запрос выглядеть на данный момент:Использование PHP, MySQL для запроса две таблицы

$result = mysql_query("SELECT * FROM promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'") or die('Error : ' . mysql_error()); 
    while($row = mysql_fetch_array($result)) 
    { 
    echo "<p>".$row['title']."</p>"; 
    echo "<p>".$row['description']."</p>"; 
    echo "<p>".$row['filename']."</p>"; 
    } 

Я хотел бы закончить со следующим:

  • Название Promo 1

  • Это Промо 1 Описание, разве это не здорово ?!

  • filename_1.jpg

  • filename_2.jpg и однако много файлов, связанных с этим промо перечисленных ...

Однако, основываясь на запросе выше я получаю:

  • Это Промо 1 Описание, разве это не здорово ?!

  • filename_1.jpg

  • Это Promo 1 Описание, это не здорово ?!

  • filename_2.jpg

Так повторяется (я вроде понимаю, почему) и не тянет в «название» промо на всех! Может ли кто-нибудь порекомендовать проблему с моим JOIN или моим PHP? Большое спасибо за вашу помощь :)

+0

Как выглядит ваша база данных? – Codler

+1

Если вы выберете на промо-идентификаторе, он найдет только промо, связанное с этим идентификатором, полагаю, у вас есть 2 файла, соединенных с промо 1 – Luke

+0

Можем ли мы видеть структуры таблиц 'promo' и' items'? – Bobby

ответ

0

Вероятно, описание и имя файла отображаются, поскольку эти имена существуют только на одной из таблиц, но заголовок находится на обеих таблицах.

Если вы используете запрос:

SELECT 
    * 
FROM 
    promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'" 

Имен полей должны быть в пути table.field. очень полезно выявить имена полей, которые вам нужны, чтобы помочь вам и извлечь только нужные данные, а не всю таблицу. Это ускоряет процесс поиска строк и предотвращает проблемы с именами.

Также вы можете указать имя столбца остроумия предложение «AS» Пример:

SELECT 
    promo.title AS title, 
    promo.description AS description, 
    items.filename AS filename 
FROM 
    promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'" 

И вы получите таблицу, как (я выставиться воображаемые данные о нем):

title | description | filename 
------------------------------- 
title1|description1 | filename1 
title1|description1 | filename2 
title2|description2 | filename3 

Советы:

  • Если вы получили мо чем один элемент за промо, все данные повторяются в каждой строке.

    • Вам нужно запросить, чтобы отобразить все предметы на промо, не повторяя промо-данные, сделать более сложный запрос или добавить код.
  • Если у вас нет товаров для промо, промо-акции не отображаются в списке.

    • Вам необходимо использовать список al promos и по каждому списку свои собственные элементы, чтобы показать промо без элементов или использовать запрос OUTER JOIN.
0

Не используйте ***** в своих запросах, но назовите нужные столбцы и примените соответствующие алиасы.

Смежные вопросы