#php #mysql #pattern-matching
#php #MySQL #Сопоставление с шаблоном
Вопрос:
У меня в базе данных есть такая таблица.
| id | yes_answer | no_answer |
| a01 | a05 | a04 |
| a03 | a16 | a32 |
| a04 | c01 | a05 |
| a05 | a06 | c06 |
| a06 | a08 | a09 |
| a08 | c03 | a09 |
| a09 | a03 | |
| a16 | a33 | a02 |
| a32 | c04 | a16 |
| a33 | c05 | |
В качестве объяснения :
1. id
столбец представляет идентификатор вопроса. он связан с другой таблицей в моей базе данных.
2. yes_answer
столбец представляет следующий вопрос (например a01
) или вывод (например c04
), который вы получаете, когда отвечаете на вопрос, представленный id
столбцом со yes
TRUE
1
значением или или.
3. no_answer
обычно это то же yes_answer column
самое, что и, за исключением того, что вы получаете его, когда отвечаете на вопрос, представленный id
столбцом со no
FALSE
0
значением , , .
4. Все id
, yes_answer
, no_answer
связаны друг с другом. Результатом является шаблон. Когда вы хотите найти путь, который приведет к ответу c01
, это будет похоже c05
-> a33
, a16
, a32
, a03
, a09
, a06
, a05
, a01
.
И здесь я пытаюсь отследить шаблон из answer
столбца, отмеченного c
как c01
или c02
как выше. И я смог отследить только его начальное значение, например ( c05
-> a33
), а остальное пусто.
Вот мой код
$sqlQueryYes="SELECT * FROM tbl_path_inference WHERE yes_answer='c05'";
$execQueryYes=mysql_query($sqlQueryYes);<br />
$queryStatus=mysql_num_rows($execQueyYes); //Getting Query Status<br />
if($queryStatus == 1) {
$getDataYes=mysql_fetch_array($execQueryYes);
$ansPath=$ansPath." ".$getDataYes['id'];
} else { // if cant find answer on column yes_answer try on no_answer
$sqlQueryNo="SELECT * FROM tbl_path_inference WHERE no_answer='c05'";
$execQueryNo=mysql_query($sqlQueryNo);
$getDataNo=mysql_fetch_array($execQueryNo);
$ansPath=$ansPath." ".$getDataNo;
}
У кого-нибудь есть решение по этому вопросу. Я все еще работаю над этим сейчас.
Комментарии:
1. Вот полезный сайт: mikehillyer.com/articles/managing-hierarchical-data-in-mysql
2. Я это исправил. Вот мой пример кода
3. Пожалуйста, поместите этот ответ в блок ответов ниже в качестве самостоятельного ответа, хорошо?
4. Это не ответ. Мой код может извлекать только один путь. Не полный путь, например, когда я пытаюсь найти путь
c05
, я могу только извлечьa33
. Вот и все. Только один путь.5. Почему вы так пишете каждое слово с заглавной буквы? Это действительно трудно читать. Это глупое мобильное устройство?