我想使用字段名稱來確定將用於搜索的列,但首先我必須使用名稱來查找列ID,然後將列ID與字符串連接以獲取實際列名稱。我現在正在處理兩個查詢,但我想將它們合併爲一個查詢。在MySQL中,結合查詢以獲得列名,並在該列上獲得第二個查詢
例如,我想搜索「fool = true」。在第一張表中,我發現「傻瓜」的值在第二張表的第一列。在第二個表格中,我搜索real,查找「field_id_1 = true」。
此表將名稱映射到第二個表中使用的列ID。
exp_channel_fields
+field_id +field_name +
|---------|-----------|
|1 |fool |
|2 |money |
+---------+-----------|
此表具有要搜索的數據,但列名與上一步的ID不完全匹配。我要在前面加上「field_id_」來之前我找到了ID:
exp_channel_data
+entry_id+field_id_1 +field_id_2 +
|--------|-----------|-----------|
|837 |true |$500 |
|838 |false |$50,000 |
+--------+-----------+-----------+
下面是我用的第一個查詢,我將結果存儲到$ myFieldID。
SELECT field_id as tField_id FROM exp_channel_fields
WHERE field_name = 'fool'
然後我用結果來建立第二個查詢:
SELECT
GROUP_CONCAT(entry_id ORDER BY entry_id SEPARATOR '|')
AS result_entries
FROM exp_channel_data
WHERE field_id_{$myFieldID} = "true"
有沒有辦法將這些組合成一個單一的查詢?提前致謝!
我想是不是可以這樣做: http://stackoverflow.com/questions/985842/mysql-concat-to-create-column -names – phoet
我會研究服務器準備的語句。這至少會消除我現在使用的PHP代碼來使用從一個查詢返回的值來構造第二個查詢。 – Mike3d0g
@phoet,您的評論是最有幫助的答案。一,不可能直接做我所問的。二,鏈接到服務器準備的語句*幾乎*提供了我需要的解決方法。 (唉,ExpressionEngine阻止服務器準備好的語句。)您想重新發布您的評論作爲答案嗎? – Mike3d0g