public MdxSelectStatement(
				IEnumerable<MdxWithClauseItem> with,
				IEnumerable<MdxAxis> axes,
				MdxWhereClause where,
				MdxObjectReferenceExpression cube)
		{
			if (with != null)
			{
				With.AddRange(with);
			}
			if (axes != null)
			{
				Axes.AddRange(axes);
			}
			_Cube = cube;
			m_Where = where;
		}
		public MdxSelectStatement(
				IEnumerable<MdxWithClauseItem> with,
				IEnumerable<MdxAxis> axes,
				MdxWhereClause where,
				MdxObject CubeSpecification)
			: this()
		{
			if (with != null)
			{
				With.AddRange(with);
			}
			if (axes != null)
			{
				Axes.AddRange(axes);
			}
			m_Where = where;
			this.CubeSpecification = CubeSpecification;
		}
		public MdxSelectStatement(
				IEnumerable<MdxWithClauseItem> with,
				IEnumerable<MdxAxis> axes,
				MdxWhereClause where,
				MdxSelectStatement subSelect)
			: this()
		{
			if (with != null)
			{
				With.AddRange(with);
			}
			if (axes != null)
			{
				Axes.AddRange(axes);
			}
			m_Where = where;
			m_SubSelect = subSelect;
		}
		public MdxSelectStatement(
				IEnumerable<MdxAxis> axes,
				MdxWhereClause where)
			: this(null, axes, where, (MdxObjectReferenceExpression)null)
		{
		}