示例#1
0
        public DataTable GetSubJoinStrings(DataTable pJoinStrings, JoinTypes pJoinTypes)
        {
            string schemaCondition = string.Empty;

            switch (pJoinTypes)
            {
            case JoinTypes.JoinWithLookupTables: schemaCondition = "SelectPart LIKE 'LT%'"; break;

            case JoinTypes.JoinWithRelatedTables: schemaCondition = "SelectPart LIKE 'RT%'"; break;

            case JoinTypes.JoinWithDetailTables: schemaCondition = "SelectPart LIKE 'DT%'"; break;

            case JoinTypes.JoinWithLookupAndRelatedTables: schemaCondition = "SelectPart LIKE 'LT%' OR SelectPart LIKE 'RT%'"; break;

            case JoinTypes.JoinWithLookupAndDetailTables: schemaCondition = "SelectPart LIKE 'LT%' OR SelectPart LIKE 'DT%'"; break;

            case JoinTypes.JoinWithRelatedAndDetailTables: schemaCondition = "SelectPart LIKE 'RT%' OR SelectPart LIKE 'DT%'"; break;

            case JoinTypes.JoinAll: break;
            }

            DataTable oDt = new DataTable();

            if (!string.IsNullOrWhiteSpace(schemaCondition))
            {
                oDt = pJoinStrings.FilterDataTable(schemaCondition);
            }

            return(oDt);
        }
示例#2
0
        public static SelectQuery Join <TJoin, TSelect>(this SelectQuery query, JoinTypes joinTypes, string tableName, string joinAlias, string selectAlias, Expression <Func <TJoin, TSelect, bool> > selectors)
        {
            var joinComponent = new JoinComponent <TJoin, TSelect>(joinTypes, tableName, joinAlias, selectAlias, selectors);

            query.Joins.Add(joinComponent);
            return(query);
        }
示例#3
0
        public void AddManyToManyJoin <T>(JoinTypes jointype, string viaSchema, string viaTable, string viaAlias, string myColumn, string parentColumn)
        {
            string join;

            switch (jointype)
            {
            case JoinTypes.LeftJoin:
                join = "LEFT JOIN";
                break;

            case JoinTypes.RightJoin:
                join = "RIGHT JOIN";
                break;

            case JoinTypes.InnerJoin:
                join = "INNER JOIN";
                break;

            default:
                throw new NotSupportedException("Join types");
            }

            var typePair = GetTable <T>();

            //e.g.LEFT JOIN dbo.CustomerAddress on dbo.CustomerAddress.customerId = customer.id
            _joins.Add($"{join} [{viaSchema}].[{viaTable}] {viaAlias} ON {viaAlias}.[{3}Id] = {_fromAlias}.[Id]");

            _joins.Add($"{join} [{typePair.Key.Schema}].[{typePair.Key.Table}] {typePair.Key.Alias}" +
                       $" ON {typePair.Key.Alias}.[Id] = {viaAlias}.[{typePair.Key.Table}Id]");
        }
示例#4
0
        public void AddJoin <T>(JoinTypes jointype, string myColumn, string parentColumn)
        {
            string join;

            switch (jointype)
            {
            case JoinTypes.LeftJoin:
                join = "LEFT JOIN";
                break;

            case JoinTypes.RightJoin:
                join = "RIGHT JOIN";
                break;

            case JoinTypes.InnerJoin:
                join = "INNER JOIN";
                break;

            default:
                throw new NotSupportedException("Join types");
            }

            var typePair = GetTable <T>();

            _joins.Add($"{join} [{typePair.Key.Schema}].[{typePair.Key.Table}] {typePair.Key.Alias}" +
                       $" ON {typePair.Key.Alias}.[{myColumn}] = {_fromAlias}.[{parentColumn}]");
        }
示例#5
0
        public DataTable GetJoinString(ref string pSelectPart, ref string pJoinPart, JoinTypes pJoinTypes, string pSchemaName, string pTableName, string pLookupTablePrefix)
        {
            string schemaCondition = string.Empty;

            switch (pJoinTypes)
            {
            case JoinTypes.JoinWithLookupTables: schemaCondition = string.Join("", " AND TC.TABLE_SCHEMA LIKE '", pLookupTablePrefix, "%'"); break;

            case JoinTypes.JoinWithDetailTables: schemaCondition = string.Join("", " AND TC.TABLE_SCHEMA NOT LIKE '", pLookupTablePrefix, "%'"); break;

            case JoinTypes.JoinAll: break;
            }

            string sql = @"
            WITH RELATION AS
            (
                SELECT   
                    ROW_NUMBER() OVER (ORDER BY TC.TABLE_NAME ASC) AS RowNo,
                    TC.TABLE_CATALOG + '.' + TC.TABLE_SCHEMA + '.' + TC.TABLE_NAME AS PKTableName,
                    CCU2.COLUMN_NAME AS PKColumnName,
                    CCU.COLUMN_NAME AS FKColumnName
                        
                FROM	
                    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CCU
                    INNER JOIN 
                    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON CCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA 
                            AND CCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
                    INNER JOIN 
                    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU2 ON CCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA 
                            AND CCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME 
                    INNER JOIN
                    INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON TC.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA 
                            AND TC.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME

                WHERE 
                    CCU.TABLE_SCHEMA = @pSchemaName AND 
                    CCU.TABLE_NAME = @pTableName {0}
            )
            SELECT	 
                'T' + CAST(RowNo AS VARCHAR(30)) + '.*' AS SelectPart,
                'INNER JOIN ' + PKTableName + ' AS T' + CAST(RowNo AS VARCHAR(30)) + ' ON T' + CAST(RowNo AS VARCHAR(30)) + '.' + PKColumnName + ' = ' + ' MT.' + FKColumnName AS JoinPart
            FROM 
                RELATION
            ";

            sql = string.Format(sql, schemaCondition);

            SqlCommand cmd = new SqlCommand(sql, Conn);

            cmd.Parameters.AddWithValue("@pSchemaName", pSchemaName);
            cmd.Parameters.AddWithValue("@pTableName", pTableName);

            SqlDataReader dr  = cmd.ExecuteReader(CommandBehavior.Default);
            DataTable     oDt = new DataTable();

            oDt.Load(dr);
            return(oDt);
        }
示例#6
0
        public DataTable GetJoinString(ref string pSelectPart, ref string pJoinPart, JoinTypes pJoinTypes, string pSchemaName, string pTableName, string pLookupTablePrefix)
        {
            string schemaCondition = string.Empty;

            switch (pJoinTypes)
            {
            case JoinTypes.JoinWithLookupTables: schemaCondition = string.Join("", " AND clm.table_name LIKE '", pLookupTablePrefix, "%'"); break;

            case JoinTypes.JoinWithDetailTables: schemaCondition = string.Join("", " AND clm.table_name NOT LIKE '", pLookupTablePrefix, "%'"); break;

            case JoinTypes.JoinAll: break;
            }

            string sql = @"
                WITH RELATION AS
                    (
                    SELECT
                        row_number() OVER (ORDER BY clm.table_name ASC) AS RowNo,
                        cspk.owner || '.' || cspk.table_name AS PKTableName,
                        clm2.column_name AS PKColumnName,
                        clm.column_name AS FKColumnName

                    FROM
                        all_cons_columns clm
                        INNER JOIN
                        all_constraints cs ON cs.owner = clm.owner AND cs.constraint_name = clm.constraint_name
                        INNER JOIN
                        all_constraints cspk ON cspk.owner = cs.r_owner AND cspk.constraint_name = cs.r_constraint_name
                        INNER JOIN
                        all_cons_columns clm2 ON clm2.constraint_name = cspk.constraint_name AND clm2.owner = cspk.owner
    
                    WHERE 
                        clm.owner = :pSchemaName AND
                        clm.Table_Name = :pTabloName AND
                        cs.constraint_type = 'R' {0}
                    )
                    SELECT     
                        'T' || CAST(RowNo AS VARCHAR(30)) || '.*' AS SelectPart,
                        'INNER JOIN ' || PKTableName || ' T' || CAST(RowNo AS VARCHAR(30)) || ' ON T' || CAST(RowNo AS VARCHAR(30)) || '.' || PKColumnName || ' = ' || ' MT.' || FKColumnName AS JoinPart
                    FROM 
                        RELATION
            ";

            sql = string.Format(sql, schemaCondition);

            //OracleCommand cmd = new OracleCommand(sql, Conn);

            //cmd.Parameters.Add(":pSchemaName", pSchemaName);
            //cmd.Parameters.Add(":pTabloName", pTableName);

            //OracleDataReader dr = cmd.ExecuteReader(CommandBehavior.Default);
            //DataTable oDt = new DataTable();
            //oDt.Load(dr);
            //return oDt;
            return(null);
        }
示例#7
0
 public Criteria(Type originalEntityType, string originalEntityProperty, Type joinedEntityType, string joinEntityProperty, JoinTypes joinType, ComparisonOperators comparisonOperators)
 {
     this.OriginalEntityTypeName = originalEntityType.GetField("TableName").GetRawConstantValue().ToString();
     this.OriginalEntityProperty = originalEntityProperty;
     this.JoinedEntityTypeName   = joinedEntityType.GetField("TableName").GetRawConstantValue().ToString();
     this.JoinEntityProperty     = joinEntityProperty;
     this.CriteriaType           = CriteriaTypes.Join;
     this.JoinType           = joinType;
     this.ComparisonOperator = comparisonOperators;
 }
示例#8
0
 private string GetJoinTypeText(JoinTypes type)
 {
     if (type == JoinTypes.And)
     {
         return(PhraseLib.Lookup("term.and", LanguageID));
     }
     else
     {
         return(PhraseLib.Lookup("term.or", LanguageID));
     }
 }
示例#9
0
        public JoinComponent(JoinTypes joinTypes, string tableName, string joinAlias, string selectAlias, Expression <Func <TJoin, TSelect, bool> > selectors)
        {
            JoinAlias = joinAlias;
            TableName = tableName;
            JoinTypes = joinTypes;

            var expressionJoinObjectProperties   = selectors.Parameters[0].ToExpressionProperty(joinAlias);
            var expressionSelectObjectProperties = selectors.Parameters[1].ToExpressionProperty(selectAlias);

            ConditionalComponent = new ConditionalComponent((BinaryExpression)selectors.Body, new[] { expressionJoinObjectProperties, expressionSelectObjectProperties });
        }
示例#10
0
 public SqlJoin(
     string tableName,
     JoinTypes joinType    = JoinTypes.Inner,
     string joinExpression = null,
     string _as            = null)
 {
     TableName      = tableName;
     JoinType       = joinType;
     JoinExpression = joinExpression;
     As             = _as;
 }
示例#11
0
        public TableJoin(JoinTypes type, string joinTable, string table, string joinField, string tableField)
        {
            conditions = new QueryCondition();

            Type = type;
            JoinTable = joinTable;
            Table = table;
            JoinField = joinField;
            TableField = tableField;

            AddCondition(new DataField(joinTable, joinField).ToString(), new DataField(table, tableField));
        }
示例#12
0
        public TableJoin(JoinTypes type, DataField joinField, DataField tableField)
        {
            conditions = new QueryCondition();

            Type = type;
            JoinTable = joinField.Table;
            JoinField = joinField.Name;
            Table = tableField.Table;
            TableField = tableField.Name;

            AddCondition(joinField.ToString(), tableField);
        }
示例#13
0
    private void ToggelConditionJoinType(long ConditionID, int ConditionTypeID, JoinTypes jointype)
    {
        if (jointype == JoinTypes.And)
        {
            jointype = JoinTypes.Or;
        }

        else
        {
            jointype = JoinTypes.And;
        }

        if (objOffer.EngineID == 2 || objOffer.EngineID == 9 || objOffer.EngineID == 0)
        {
            m_Offer.ToggleOfferEligibleConditionJoinType(objOffer.OfferID, jointype, ConditionTypeID);
        }

        m_Offer.UpdateOfferStatusToModified(objOffer.OfferID, objOffer.EngineID, AdminUserID);
        Response.Redirect(hdnPath.Value, false);
    }
示例#14
0
        public static JoinTypes Parse(string code)
        {
            JoinTypes type = JoinTypes.Join;

            if (code.Equals("left", StringComparison.OrdinalIgnoreCase))
            {
                type = JoinTypes.Left;
            }
            else if (code.Equals("right", StringComparison.OrdinalIgnoreCase))
            {
                type = JoinTypes.Right;
            }
            else if (code.Equals("joint", StringComparison.OrdinalIgnoreCase))
            {
                type = JoinTypes.Join;
            }
            else if (code.Equals("outer", StringComparison.OrdinalIgnoreCase))
            {
                type = JoinTypes.Outer;
            }
            return(type);
        }
示例#15
0
        public static string Format(JoinTypes type)
        {
            string rezult = string.Empty;

            if ((type & JoinTypes.Left) == JoinTypes.Left)
            {
                rezult = "left";
            }
            else if ((type & JoinTypes.Right) == JoinTypes.Right)
            {
                rezult = "right";
            }
            if ((type & JoinTypes.Outer) == JoinTypes.Outer)
            {
                rezult += " outer";
            }
            if (type != JoinTypes.Undefined)
            {
                rezult += " join";
            }
            return(rezult);
        }
示例#16
0
        public Join CreateJoin(string targetTable, string sourceColumn, string targetColumn, string targetTableAlias = null, JoinTypes type = JoinTypes.Inner, bool isEqui = true)
        {
            if (targetTable == null)
            {
                throw new ArgumentNullException(nameof(targetTable));
            }

            if (sourceColumn == null)
            {
                throw new ArgumentNullException(nameof(sourceColumn));
            }

            if (targetColumn == null)
            {
                throw new ArgumentNullException(nameof(targetColumn));
            }

            Join join = new Join(targetTable, sourceColumn, targetColumn, targetTableAlias, type, true);

            Joins.Add(join);

            return(join);
        }
示例#17
0
文件: DAL.cs 项目: awnowlin/helpmebot
 /// <summary>
 /// Adds a JOIN clause.
 /// </summary>
 /// <param name="table">The table.</param>
 /// <param name="joinType">Type of the join.</param>
 /// <param name="conditions">The conditions.</param>
 public void addJoin(string table, JoinTypes joinType, WhereConds conditions)
 {
     this._joins.AddLast(new Join(joinType, table, conditions));
 }
示例#18
0
文件: DAL.cs 项目: awnowlin/helpmebot
 public Join(JoinTypes type, string table, WhereConds conditions)
 {
     joinType = type;
     this.table = table;
     joinConditions = conditions;
 }
示例#19
0
 public Join(JoinTypes type, string table, WhereConds conditions)
 {
     joinType       = type;
     this.table     = table;
     joinConditions = conditions;
 }
示例#20
0
 public TableJoin AddJoin(JoinTypes type, DataField joinField, DataField tableField)
 {
     TableJoin tj = new TableJoin(type, joinField, tableField);
     joins.Add(tj);
     return tj;
 }
示例#21
0
 public JoinType(JoinTypes type)
 {
     Type = type;
 }
示例#22
0
 /// <summary>
 /// Adds a JOIN clause.
 /// </summary>
 /// <param name="table">The table.</param>
 /// <param name="joinType">Type of the join.</param>
 /// <param name="conditions">The conditions.</param>
 public void addJoin(string table, JoinTypes joinType, WhereConds conditions)
 {
     this._joins.AddLast(new Join(joinType, table, conditions));
 }
示例#23
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="type">Type of table join</param>
 /// <param name="table">Table adjoining the parent</param>
 /// <param name="joinField">Join field in the table being adjoined to the parent</param>
 /// <param name="tableField">Join field in the parent table</param>
 public TableJoin AddJoin(JoinTypes type, string table, string joinField, string tableField)
 {
     TableJoin tj = new TableJoin(type, this.tables[0], table, joinField, tableField);
     joins.Add(tj);
     return tj;
 }
示例#24
0
 /// <summary>
 /// Adds a subsequent table to the query
 /// </summary>
 /// <param name="leftTable">Name of table on left side of join</param>
 /// <param name="leftColumn">Name of column on left side of join</param>
 /// <param name="newTable">Name of table being added</param>
 /// <param name="rightColumn">Name of column on right side of join</param>
 /// <param name="type">Join type</param>
 public void AddTable(string leftTable, string leftColumn, string newTable, string rightColumn, JoinTypes type)
 {
     this._tables.Add(new TableInfo
     {
         Name        = newTable,
         JoinType    = type,
         LeftTable   = leftTable,
         LeftColumn  = leftColumn,
         RightColumn = rightColumn
     });
 }
示例#25
0
文件: Join.cs 项目: njmube/lazaro
 public Join(string table, string on, JoinTypes joinType)
     : this(table, on)
 {
     this.JoinType = joinType;
 }
示例#26
0
 public Join(string table, string on, JoinTypes joinType)
         : this(table, on)
 {
         this.JoinType = joinType;
 }