Я пробовал искать ответ, но не нашел того, который, похоже, доставит меня туда, где я хочу быть. У меня есть две таблицы прямо сейчас, я пытаюсь присоединиться.MYSQL Query JOIN несколько полей в одно поле
adhesive_table
id | adhesive_name | adhesive_code
1 | Ivory | 0090
2 | Jet Black | 0100
3 | Khaki | 0110
4 | Natural | 0120
и match_table
id | brand_id | sheet_name | match_1 | match_2
1 | 1 | Wheat | 0110 | 0120
2 | 1 | Dew | 0090 | 0110
Etc ... Там тысячи матчей и сотни клеев. Я пытаюсь схватить матч и вернуть соответствующее имя_каталога, используя JOIN.
$sql = "SELECT * FROM match_table
JOIN adhesive_table
ON match_table.match_1 = adhesive_table.adhesive_code
WHERE match_table.brand_id
IN ($b)";
(за $ б отправляется через $ .post и соответствует Brand_ID)
И это прекрасно работает для одного матча. Но для многих есть второе (альтернативное) совпадение, указанное в match_2. Поэтому я пытался получить JOIN-работу, где я могу получить имена для соответствия 1,2,3 безрезультатно. Я пытался запросы, как:
$sql = "SELECT * FROM match_table
LEFT JOIN adhesive_table
ON match_table.match_1 = adhesive_table.adhesive_code
LEFT JOIN adhesive_table
ON match_table.match_2 = adhesive_table.adhesive_code
WHERE match_table.brand_id
IN ($b)";
или
$sql = "SELECT * FROM match_table
JOIN adhesive_table
ON match_table.match_1 = adhesive_table.adhesive_code
AND match_table.match_2 = adhesive_table.adhesive_code
WHERE match_table.brand_id
IN ($b)";
Но ни работы. Мне интересно, не форматирование моих таблиц не позволяет этому работать, или если мне не хватает чего-то очевидного. Это где-то, что group_concat нужно использовать?
Спасибо за любую помощь, которую вы можете предоставить.
Я должен добавить таблицу, я надеюсь получить в итоге будет выглядеть следующим образом:
brand_id = 1
sheet_name = Wheat
match_1 = (adhesive_code & adhesive_name) 0110 Khaki
match_2 = (adhesive_code & adhesive_name) 0120 Natural
После запроса результаты помещаются в массив
$arr = array();
$result = mysql_query($sql);
if($result) {
while($row = mysql_fetch_array($result)){
$arr[] = $row;
}
} else {
$arr[] = "";
}
echo json_encode($arr);
Это отправленного вернуться к моему основному файлу, и я получаю результаты в цикле, который выглядит следующим образом:
$.post("getmatches.php",{checkedBrand:checkedBrand},function(json){
for(var i=0; i<json.length; i++){
htmlFormat +=
" sheet : " + json[i].sheet_name
+ " - " + "match_1 : " + json[i].adc1
+ " - " + "name : " + json[i].ad1
+ " - " + "match_2 : " + json[i].adc2
+ " - " + "name : " + json[i].ad2
+ "<br />";
} // end for loop
$(".stuffs").html(htmlFormat)
}) // end post
Большого спасибо за Sebas «терпение и помощь, последний используемый метод работы заключается в следующем. Я добавил выбор столбца AS alias, чтобы я мог ссылаться на них в javascript после возврата json.
$sql="
SELECT brand_id, sheet_name, a.adhesive_name AS ad1, a.adhesive_code AS adc1, b.adhesive_name ad2, b.adhesive_code adc2
FROM match_table
LEFT JOIN adhesive_table a ON match_table.match_1 = a.adhesive_code
LEFT JOIN adhesive_table b ON match_table.match_2 = b.adhesive_code
WHERE
match_table.brand_id IN ($b)";
Пожалуйста, не используйте '' для форматирования кода, но использовать 'вместо или отступ (см мой выбор) – j0k