Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Селект на 2 таблици

Featured Replies

Здравейте

Имам следният проблем.Значи имам 2 таблици в базата данни - `products` и 'products_to_categories' .Искам да селектирам 2-те таблици ,но амо по ID на категорията ,към която спада продукта.

function genrelist() {

    $ret = array();

    $res = mysql_query("SELECT products_model,products_price FROM products,products_to_categories WHERE products_to_categories.categories_id = 9");

 while ($row = mysql_fetch_array($res))

        $ret[] = $row;

    return $ret;

}



Следва визуализацията :



<select name="type" style="HEIGHT: 22px; WIDTH: 240px" onchange="ChangeSelection(this.form, 0)">


    <option value=0>*****************************</option>

 <?

    $cats = genrelist();

$catdropdown = "";

foreach ($cats as $cat) {

    $catdropdown .= "<option value=\"" . $cat["products_price"] . "\"";

    if ($cat["products_price"] == $_GET["cat"])

        $catdropdown .= " selected=\"selected\"";

    $catdropdown .= ">" . htmlspecialchars($cat["products_model"]) . "</option>\n";

}

?>

<?= $catdropdown ?>

   </select>

Проблемът е ,че ми показва всички продукти а не само от категория ID = 9 .

В таблица 'products' имам следните полета :

products_id , products_quantity , products_model , products_image , products_price products_date_added , products_last_modified , products_date_available , products_weight products_status , products_tax_class_id , manufacturers_id , products_ordered

в 'products_to_categories' са :

products_id и categories_id

Значи идеята ми е такава.Имам таблица с 3 колони.Искам за всяка категория да отговаря продукт и след избирането на продукта в 3-тата колона да се визуализира стойността му.

Ако някой има решение на въпроса,моля да пише.Благодаря предварително.

Select products_to_categories.* FROM products_to_categories JOIN categories WHERE (products_to_categories.categories_id=categories.categories_id AND categories.categorie_id=9);

или на прост български език:

ИЗБЕРИ products_to_categories.всичко ОТ products_to_categories СЪБЕРИ СЪС categories КЪДЕТО (products_to_categories.индекс на категория = categories.индекс на категория И КЪДЕТО categories.индекс на категория = 9);

Редактирано от Maverick (преглед на промените)

Select products_to_categories.* FROM products_to_categories JOIN categories WHERE (products_to_categories.categories_id=categories.categories_id AND categories.categorie_id=9);

или на прост български език:

ИЗБЕРИ products_to_categories.всичко ОТ products_to_categories СЪБЕРИ СЪС categories КЪДЕТО (products_to_categories.индекс на категория = categories.индекс на категория И КЪДЕТО categories.индекс на категория = 9);

<{POST_SNAPBACK}>

Пробва ли го това дали сработва ? Защото така на пръв поглед ме съмнява.

  • Автор

Мне..неработи.Резултатът е същият както преди...Вади си ми всички продукти , нищо че съм му казал да са само от категория = 8 примерно

Мне..неработи.Резултатът е същият както преди...Вади си ми всички продукти , нищо че съм му казал да са само от категория = 8 примерно

<{POST_SNAPBACK}>

Ок де покажи ми explain на categories и product_to_categories

Кодът който написах по-горе работи, въпросът е дали си направил таблиците както трябва.

Таблица категории:

1. индекс (int)

2. описание (varchar or text)

3. описание (varchar or text)

4 ....

Таблица продукти:

1. индекс (int)

2. външен индекс (int) -> описва към коя категоря принадлежи продукта. Т.е. тук слагаш индекса на категорията.

Кодът който написах по-горе работи, въпросът е дали си направил таблиците както трябва.

Таблица категории:

1. индекс (int)

2. описание (varchar or text)

3. описание (varchar or text)

4 ....

Таблица продукти:

1. индекс (int)

2. външен индекс (int) -> описва към коя категоря принадлежи продукта. Т.е. тук слагаш индекса на категорията.

<{POST_SNAPBACK}>

Индекса в случая не е необходим проблема му е грешна sql заявка.

Според мен трябва да е нещо от сорта на :

select pole1,pole2... from table left join table2 on table.id=table2.otherid where id=9 group by 'neshto';

Но не мога да ти кажа точната заявка без да съм видял структурута на таблиците , а и въпроса е зададен доста неясно.

  • Автор

Това е структурата на таблица 'products'

Поле                      Тип      Колация Атрибути Празно По подразбиране Допълнително

products_id            int(11)                      не                                        auto_increment     

products_quantity      int(4)                      не        0               

products_model        varchar(50) latin1_swedish_ci  да      NULL               

products_image        varchar(64) latin1_swedish_ci  да      NULL               

products_price        decimal(15,4)                  не      0.0000               

products_date_added  datetime                      не      0000-00-00 00:00:00               

products_last_modified  datetime                    да      NULL               

products_date_available datetime                    да      NULL               

products_weight      decimal(5,2)                  не      0.00               

products_status      tinyint(1)                    не      0               

products_tax_class_id  int(11)                      не      0               

manufacturers_id      int(11)                      да      NULL               

products_ordered        int(11)                      не      0             

А това е на 'products_to_categories'

Поле                Тип      Колация Атрибути Празно По подразбиране

products_id      int(11)                                  не        0               

categories_id    int(11)                                  не        0             

SELECT products_model,products_price FROM products,products_to_categories WHERE products_to_categories.categories_id = 9 AND products.products_id = products_to_categories.products_id

Така не става ли? JOIN директивата е малко остаряла и доста DBMS-и сами решават как да обединяват таблиците. Ако случаят е такъв, провери дали коректно си задал връзката едно към много между таблиците.

  • Автор
SELECT products_model,products_price FROM products,products_to_categories WHERE products_to_categories.categories_id = 9 AND products.products_id = products_to_categories.products_id

Мерси много точно това ми трябва и проработи :)

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Публикацията ви съдържа термини, които не допускаме! Моля, редактирайте съдържанието си и премахнете подчертаните думи по-долу. Ако замените букви от думата със звездички или друго, за да заобиколите това предупреждение, профилът ви ще бъде блокиран и наказан!
Напишете отговор в тази тема...

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.