|
Если отсутствует значение получить значение из имеющихся доступных
|
|||
---|---|---|---|
#18+
Есть две взаимосвязанных таблицы Структура таблиц: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
для каждого товара имеется 3 версии названия на каждом языке (языки на данный момент: ru,uk,en лежат в lang) НО не у всех товаров может быть заполнены все версии языков. задача - получить все товары (например, товаров 10 шт.) с определенным языком, если нет такого языка, брать значение с любым другим языком ДЛЯ ЭТОГО товара. Другими словами, если отсутствует значение для определенного языка, надо получить другое значение из имеющихся доступных языков для определенного товара. ========== Например, все товары имеют русский перевод, а вот украинский у некоторых отсутствует. Надо, чтобы вместо украинского name был заменен на name с русским значением делаю такой запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
получаю ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2019, 14:17 |
|
Если отсутствует значение получить значение из имеющихся доступных
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2019, 11:32 |
|
Если отсутствует значение получить значение из имеющихся доступных
|
|||
---|---|---|---|
#18+
Вообщем, вопрос решил. На самом же деле запрос немного посложней. Выложу весь запрос, может кому пригодится. В этом запросе не только товары разноязычные, но и категории продавцов, общие категории на торговой площадки, переводы контента для магазинов продавцов, а также валюты и поведение для них можно построить по этому принципу, но для некоторых из них надо будет построить немного другую структуру. В данном случае рассмотрим только товары. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150.
Разберем по порядку (только актуальные строки). Получаем данные из всех полей со всеми переводами по необходимому для запроса условию (рассматриваем для товаров). Код: sql 1.
далеее "джойним" к товару актуальный язык и если такого нет, присваиваем NULL Код: sql 1. 2. 3. 4.
Вся магия кроется при получении результатов запроса в обработчике, например в PHP по следующему сценарию. - Получаем результат такого вида (на скрине) - Например для названия товара: если название отсутствует в поле product_name (присвоено NULL), значит берем первый результат из поля product_name s . Код: php 1. 2.
Стараюсь сделать, чтобы все было очень гибко, лаконично и нересурсоемко, так как работать предстоит с 9-ю языками. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2019, 13:24 |
|
|
start [/forum/topic.php?fid=47&fpage=33&tid=1829069]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 427ms |
0 / 0 |