Sono in procinto di convertire alcune vecchie pagine PHP per utilizzare PDO."Il risultato attivo non contiene campi" utilizzando PDO con MS SQL
Qui di seguito sono due query semplificate (non le mie domande effettivi) per aiutare la comprensione del problema che sto avendo ...
SELECT afield INTO #temptable FROM atable WHERE anotherfield = 'somevalue';
SELECT afield,anotherfield,onemorefield FROM atable
WHERE afield NOT IN (SELECT * FROM #temptable);
La query sopra genera l'errore descritto nel titolo (in modo più completo getta "Fatal error: eccezione Uncaught 'PDOException' con il messaggio 'SQLSTATE [IMSSP]: il risultato attivo per la query contiene nessun campo.'")
Se io modificare la query come questo ...
with (SELECT afield INTO #temptable FROM atable
WHERE anotherfield = 'somevalue') AS temptable;
SELECT afield,anotherfield,onemorefield FROM atable
where afield NOT IN (SELECT * FROM temptable);
Questo sembra aggirare l'errore, ma questa versione della query è orribilmente orribilmente inefficiente perché sembra eseguire la query temptable per ogni singolo campo di confronto nell'altra query.
C'è un modo per far funzionare il primo modulo (che crea una tabella temporanea una volta) con PDO?
Ha funzionato bene nella vecchia pagina che utilizzava mssql.
EDIT: So che probabilmente si può fare questo in modo 'disordinato' con la creazione di un tavolo vero e proprio, eseguirlo in php, quindi eseguire la seconda query (in una chiamata php a parte), quindi eseguire una terza interrogazione lasciare il primo tavolo. Ma preferirei non dover ricorrere a quello! :)
Si noti che le parole chiave SQL come "SELECT, WHERE, FROM ..." devono essere in maiuscolo. Ciò migliorerà la leggibilità. Dovresti iniziare con questo primo – hek2mgl
Se insisti! . – MrVimes
Separa effettivamente le query con un punto e virgola ';'? – hek2mgl