Problem mit in (...)

Hi [at] all,

Eine Funktion bekommt als Parameter eine In-Klausel.

Beispiel:
'(1,2,3,...)' geht ja auch, aber bei ...

'select * from artikel where id in (1,1)' liefert natürlich den
Datensatz 1x, brauche Ihn aber 2x.

Das kann ich auch im Code lösen, wäre aber toll, wenn jemand dafür ne
Lösung hätte.

Hat jemand ne Idee?
Nurkai [ Di, 15 Januar 2008 21:57 ] [ ID #1908185 ]

Re: Problem mit in (...)

Kai Schwartze wrote:
> 'select * from artikel where id in (1,1)' liefert natürlich den
> Datensatz 1x, brauche Ihn aber 2x.

select * from artikel where id in (1)
union
select * from artikel where id in (1)
Boris Stumm [ Mi, 16 Januar 2008 10:00 ] [ ID #1909414 ]

Re: Problem mit in (...)

Boris Stumm wrote:

> Kai Schwartze wrote:
>> 'select * from artikel where id in (1,1)' liefert natürlich den
>> Datensatz 1x, brauche Ihn aber 2x.
>
> select * from artikel where id in (1)
> union
> select * from artikel where id in (1)

Wenn dann

SELECT * FROM artikel WHERE id = 1
UNION ALL
SELECT * FROM artikel WHERE id = 1;

weil per default UNION DISTINCT gemacht wird.

Robert
mueller [ Mi, 16 Januar 2008 10:47 ] [ ID #1909415 ]

Re: Problem mit in (...)

Kai Schwartze schrieb:

> 'select * from artikel where id in (1,1)' liefert natürlich den
> Datensatz 1x, brauche Ihn aber 2x.

Das geht nur, wenn Du Dir anhand der IN-Liste ein entsprechendes
SQL-Statement zusammenbaust. Von sich aus liefert MySQL mit dieser Liste
korrekterweise genau einen Datensatz.

Gruß. Claus
Claus Reibenstein [ Mi, 16 Januar 2008 17:13 ] [ ID #1909416 ]

Re: Problem mit in (...)

select * from artikel where A_ID in (1)
union all
select * from artikel where A_ID in (1)

Ja, also im Prinzip geht das, aber leider ist das eine temporäre
Tabelle

Can't reopen table: 'tmp_artikel'
Nurkai [ Mi, 16 Januar 2008 17:40 ] [ ID #1909417 ]

Re: Problem mit in (...)

Kai Schwartze schrieb:
> 'select * from artikel where id in (1,1)' liefert natürlich den
> Datensatz 1x, brauche Ihn aber 2x.

CREATE TEMPORARY TABLE zaehlen (lfd int auto_increment primary key, id int);
INSERT INTO zaehlen (id) VALUE (1),(1),(2),(4);
SELECT * FROM artikel JOIN zaehlen ON (id) ORDER BY lfd;

(ungetestet)

HTH,


Thomas
Thomas Rachel [ Do, 17 Januar 2008 11:41 ] [ ID #1910463 ]
Datenbanken » de.comp.datenbanken.mysql » Problem mit in (...)

Vorheriges Thema: Richtige Anwendung von max()
Nächstes Thema: Sun will MySQL AB kaufen