JoinNode.php

PHP

Path: src/Parsing/SQL/AST/JoinNode.php

<?php

namespace mini\Parsing\SQL\AST;

/**
 * JOIN clause node
 *
 * Represents a single JOIN in a SELECT statement.
 * Supports INNER, LEFT, RIGHT, FULL, and CROSS joins.
 */
class JoinNode extends ASTNode
{
    public string $type = 'JOIN';

    /**
     * @param string $joinType JOIN type: 'INNER', 'LEFT', 'RIGHT', 'FULL', 'CROSS'
     * @param IdentifierNode|SubqueryNode $table Table being joined (or derived table)
     * @param ASTNode|null $condition ON condition (null for CROSS JOIN)
     * @param string|null $alias Optional table alias (required for derived tables)
     */
    public function __construct(
        public string $joinType,
        public IdentifierNode|SubqueryNode $table,
        public ?ASTNode $condition = null,
        public ?string $alias = null
    ) {}
}