在我的mysql数据库中我有一个“4级父表”,当我在php中使用它时,我不想每次多次连接时都写... 示例
procedure TfrmMain.MyVSTHeaderDrawQueryElements(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
Elements := [hpeBackground];
end;
procedure TfrmMain.MyVSTAdvancedHeaderDraw(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
begin
if hpeBackground in Elements then
begin
PaintInfo.TargetCanvas.Brush.Color := clFuchsia; // <-- your color here
if Assigned(PaintInfo.Column) then
DrawFrameControl(PaintInfo.TargetCanvas.Handle, PaintInfo.PaintRectangle, DFC_BUTTON, DFCS_FLAT or DFCS_ADJUSTRECT); // <-- I think, that this keeps the style of the header background, but I'm not sure about that
PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
end;
end;
答案 0 :(得分:1)
使用存储过程作为变量查询的简写。
https://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
使用视图的好处是完全使用WHERE过滤器。
查询视图时,优化器可能会决定
select * from (select ... from ...) where col=value
使用存储过程时,您将拥有
select ... from ... where col=value
性能差异可能很大。
答案 1 :(得分:1)
当我在php中使用它时,我不想每次都写多次 加入。
考虑使用下面的查询创建VIEW
,然后在PHP
代码中使用该视图
create view vw_multilevelquery as
select ... FROM tableA
INNER JOIN tableB ON (tableA.id = tableB.idA)
INNER JOIN tableC ON (tableB.id = tableC.idB)...
在PHP
代码中,只需在创建的视图上执行SELECT
,如
select * from vw_multilevelquery;