- Как по ID да направя асоциация от друга таблица.
WT форуми -> PHP MySQL ASP.NET -> Как по ID да направя асоциация от друга таблица.
Създайте нова тема Напишете отговор 
Автор Съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 308
Мнение 04/06/2018 10:42 am     Как по ID да направя асоциация от друга таблица. Отговорете с цитат


Здравейте, имам нужда от малко помощ за заявка.

Имам две таблици.

Таблица 1:

Order_vip

`id`
`name`
`date`

Таблица 2:

Order

`id`
`name`
`products`
`date`
`adres`
`comment`

Искам на правя следната заявка, да изкарам поръчки от orders спрямо Order_vip.

Ето и моята малка заявка за Order(таблица 2)

   $sql = $this->db->sql("
   SELECT o.order_id, o.firstname, os.name as status, o.date_added, o.date_modified, o.payment_method,
          o.shipping_method, o.total, o.payment_address_1, o.payment_address_2, o.telephone
   FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id)
   WHERE o.user_id = '" . (int)$this->user->getId() . "'
   AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "'
   AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);


Но ми се иска да изкарам поръчките само при асоцияция на Order_vip.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1471
Мнение 04/06/2018 12:10 pm      Отговорете с цитат


Първо кажи каква е връзката между двете таблици, защото първата прилича по-скоро на под-таблица на втората, а това не е добре за БД структурата.

Ето и заявката в по-четлив вид, че както си я написал, едвам се чете Very Happy

SQL code:
SELECT o.*
FROM `order` o
LEFT JOIN order_status os ON (o.order_status_id = os.order_status_id)
WHERE o.user_id = ?
AND o.order_status_id > '0'
AND o.store_id = ?
AND os.language_id = ?
ORDER BY o.order_id DESC
LIMIT ?, ?


И използвай bound parameters, вместо да вкарваш променливите директно в стринга на заявката.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
raiden
Активен
Активен

Регистриран на: 08/12/2006 10:13 am

Support: 189
Bonus: 464
Мнения: 2178
Мнение 04/06/2018 5:33 pm      Отговорете с цитат


Не стават ясни връзките между таблците, но попринцип:
Можеш да използваш условие от типа
Where order.id in (select id from order_vip)

Или да направиш inner join, или ако правиш left join да добавиш
Where order_vip.id is not null

За да сме ти максимално полезни може да покажеш структурата и заявката в sqlfiddle
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети