Я довольно новичок в Neo4j и Graph.
У меня есть простая база данных Graph только с одним отношением: таблица - [содержит] -> столбец
Я пытаюсь получитьсписок таблиц и столбцов, в названии которых содержится определенный термин.
Я хочу показать это в виде списка таблиц и количества столбцов для этой таблицы.Если имя таблицы не содержит термин, а содержит один из столбцов, оно должно быть в списке.Кроме того, в число столбцов должны входить только столбцы, содержащие термин.
Вот пример:
Table: "Chicago", Columns: "Chi_Address", "Chi_Weather", "Latitude"
Table: "Miami" , Columns: "Mia_to_Chi", "Mia_Weather"
Table: "Dallas" , Columns: "Dal_to_Mia", "Dal_Weather"
Если я ищу термин «чи», желаемый результат будет:
Table -- Col Count
Chicago -- 2
Miami -- 1
Это мой текущий запрос:
MATCH (t:table)-[r:contains]->(c:column)
where toLower(t.name) contains toLower('CHI') or toLower(c.name) contains toLower('CHI')
return t.name as Table_Name,count(c.name) as Column_Count
Моя проблема в том, что если таблица содержит термин, то я получаю счетчик всех ее столбцов, а не толькосо сроком.Так что я мой пример, который я получил бы
Chicago -- 3 //Instead of 2
Miami -- 1
Я думал о том, чтобы сделать что-то вроде:
count(c.name WHERE c.name contains('CHI')
Но это не похоже на правильный синтаксис.
Буду признателен за любую помощь.
PS: С удовольствием приму любой совет о том, как улучшить мой текущий запрос.Например, я уверен, что мне нужно улучшить поисковый запрос дважды.