zufällige Reihenfolge generieren
Kalle_B
- datenbank
0 Cheatah0 Komma fehlt
Kalle_B0 _King Lully0 Kalle_B
Hallöle,
meine Frage von letzter Woche ist schon im Archiv verschwunden, ich komme aber erst heute dazu, es auszuprobieren - und es klappt nicht.
Archiv: http://forum.de.selfhtml.org/archiv/2007/2/t146221/
Aufgabe:
Für eine Messe soll von 9:00-9:45 Uhr für jeden Aussteller versucht werden, einen Termin mit einem Interessenten zu machen.
Schritt 1:
Es sind freie Aussteller (noch ohne Termin) zu finden.
Problem:
Die Aussteller, deren Namen mit A beginnt, haben mehr Chancen als die mit Z, für die bleibt kein Kunde mehr übrig.
Bisherige, ungenügende Lösung:
$q = "
#~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~
SELECT
'".$slot_nr."' slot
,adr2.kurzname aus_firma
,adr2.adr_art adr_art
,adr1.adr_unt adr_unt
,adr2.id aus_chef
,adr1.id aus_id
,anw1.slot_nr anw_slot
,kon1.slot_nr kon_slot
FROM ".$db[0]['personen']." AS adr1
LEFT JOIN ".$db[0]['personen']." AS adr2
ON adr2.owner_id=adr1.owner_id AND adr2.kurzname=adr1.kurzname AND adr2.adr_unt=1
#ANWESENHEIT IM SLOT
LEFT JOIN ".$db[0]['anwesenheit']." AS anw1
ON anw1.owner_id=adr1.owner_id AND anw1.slot_nr=".$slot_nr." AND anw1.adr_id=adr1.id
#TERMIN IM SLOT
LEFT JOIN ".$db[0]['kontakte']." AS kon1
ON kon1.owner_id=adr1.owner_id AND kon1.slot_nr=anw1.slot_nr AND kon1.aussteller2_id=adr1.id
WHERE adr1.owner_id=".$owner_id." AND adr1.adr_kz=1 AND adr1.adr_unt=".$adr_unt." ".$such."
GROUP BY aus_firma, adr_unt, aus_chef, aus_id, anw_slot, kon_slot
HAVING anw_slot IS NOT NULL AND kon_slot IS NULL
Zusätzliche Zeile ergibt SQL- Fehler:
ORDER BY adr_art RAND(aus_firma)
Die Sortierung soll zuerst nach der Adreßart und innerhalb der gleichen Adreßart -zufällig_ nach Firmenname geschehen.
Wie geht das?
Lieben Gruß, Kalle
Hi,
Die Sortierung soll zuerst nach [Kriterium 1] und innerhalb der gleichen [Kriterienwerte] nach [Kriterium 2] geschehen.
Wie geht das?
dieses Problem ist zunächst einmal vollkommen unabhängig davon, dass eines der Kriterien den Zufall beinhaltet. Recherchiere in der Dokumentation Deines DBMS' nach der korrekten Syntax.
A propos: "Adresse" schreibt man nicht mit "ß"; es sei denn, Du möchtest das vorhergehende "e" lang aussprechen ("Adrehße").
Cheatah
habe mich so auf RAND() konzentriert und übersehen, dass das Komma gefehlt hat:
ORDER BY adr_art, RAND(aus_firma)
Nun kommt die Meldung:
1054: Unknown column 'aus_firma' in 'order clause'
Unverständlich, denn hier kannte SQL sie noch:
GROUP BY aus_firma, adr_unt, aus_chef, aus_id, anw_slot, kon_slot
Unverständlich, denn hier kannte SQL sie noch:
GROUP BY aus_firma, adr_unt, aus_chef, aus_id, anw_slot, kon_slot
1.) interessante Schreibweise, dieses SELECT mit den Kommas zu Beginn jeder neuen Zeile
2.) Mal das SQL-Statement hier posten, das wirklich abgesandt wird, slo Problemisolierung betreiben
3.) Eventuell mal ohne Aliasnamen testen
1.) interessante Schreibweise, dieses SELECT mit den Kommas zu Beginn jeder neuen Zeile
Da kann ich unkompliziert Zeilen zufügen. Sonst muss ich immer drauf achten, dass die letzte anders, nämlich ohne Komma ist.
So klappt's:
ORDER BY adr_art, RAND()
Geht aus den Unterlagen nicht hervor, da ist der RAND() allein hinter ORDER BY.
Ich hasse try and error, aber was soll's.
Kalle