コレクション データベースで植物名を検索するプログラムをPHPで作成しています。植物の学名 (Rumex acetosa や Medicago x varia など) を入力して、その名前のすべてのエントリを検索できるはずです。植物の名前は細分化されているため、すべての名前は 2 ~ 5 つの部分で構成されています。各パーツを個別に検索したくありませんが、それらをすべて 1 つの名前に追加する必要があります。
だから私がやろうとしたことは、SELECT CONCAT
条項を書くことです。
$sql = "
SELECT observationid, fullnamestring, latitudedecimal, longitudedecimal
FROM observation, (
SELECT CONCAT (genusormonomial, firstepithet, rank, hybridflag, intraspecificepithet)
FROM name
) name_str, name, gatheringsitecoordinates
WHERE name.nameid = observation.fkname
AND gatheringsitecoordinates.sitecoordinateid = observation.fkgatheringsite
AND (
SELECT CONCAT (genusormonomial, firstepithet, rank, hybridflag, intraspecificepithet)
FROM name
) name_str LIKE '" . mysql_real_escape_string($sucharray[0]) . "'
";
残念ながら、彼は私のクエリの構文について不平を言っているので、この方法では機能しません。
エラー: SQL 構文にエラーがあります。2行目付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してくださいname_str LIKE 'rum%'
最終的にどのように表示されるかを理解するには、http://bgbm3.bgbm.fu-berlin.de/iopi/gpc/query.aspを参照してください。
私は完全な Sql 初心者なので、誰かが私を助けてくれるかもしれません!
ありがとう!
PS:私はすでにスレッドSearching concatenated fieldを見てきましたが、これはできません。名前の各部分だけでなく、名前全体を検索する必要があるからです。